bnvdarklord Δημοσ. 22 Δεκεμβρίου 2010 Δημοσ. 22 Δεκεμβρίου 2010 Καλησπέρα Εχουμε μια εργασία στον SQL Server, και πρεπει να κανουμε insert τα δεδομενα για την βαση που χρειάζεται απο ενα txt αρχείο. Εψαξα στο internet και βρήκα την BULK INSERT. Το θεμα ειναι οτι τα αρχεία txt που μας εχουν δώσει περιέχουν στοιχεία απο περισσοτερους απο εναν πινακες. Παραδειγμα Πινακες: Α(col1, col2, col3) B(col1 references col1(A), col4, col5) Το αρχειο περιέχει τα εξής col1, col2, col3, col4, col5 Πως γινεται το insert σε αυτην την περιπτωση;
_tasos Δημοσ. 23 Δεκεμβρίου 2010 Δημοσ. 23 Δεκεμβρίου 2010 Δηλαδή το txt αρχείο περιέχει το αποτέλεσμα ενός join των δύο πινάκων πάνω στο πεδίο col1; Δεν γνωρίζω αν υπάρχει κάποιος τρόπος να γίνει αυτόματα, αλλά αυτό που θα έκανα είναι να φορτώσω το txt αρχείο δύο φορές (μία για κάθε πίνακα) και μετά αφού σβήσω τις περιττές columns από κάθε πίνακα να κάνω remove όλα τα duplicate rows.
bnvdarklord Δημοσ. 23 Δεκεμβρίου 2010 Μέλος Δημοσ. 23 Δεκεμβρίου 2010 Περίπλοκο ακουγεται. Μιας και δεν ειναι το ζητουμενο της εργασίας να κανεις τα inserts, μαλλον γινεται πιο απλά καπως.
mvaggel Δημοσ. 23 Δεκεμβρίου 2010 Δημοσ. 23 Δεκεμβρίου 2010 Μπορείς να κάνεις BULK INSERT σε ένα πίνακα C και μετά να τραβήξεις τα πεδία που θες με INSERT INTO A (col1, col2, col3) select col1, col2, col3 FROM C; INSERT INTO B (col1, col4, col5) select col1, col4, col5 FROM C; κάνε και ένα DROP TABLE C και είσαι κομπλέ.
_tasos Δημοσ. 23 Δεκεμβρίου 2010 Δημοσ. 23 Δεκεμβρίου 2010 Σωστή η πρόταση του mvaggel, αλλά μπορεί να έχεις διπλοεγγραφές στους πίνακες A και B. Αν όντως έχεις διπλοεγγραφές, βάλε στα SELECT το DISTINCT (SELECT DISTINCT ...) έτσι ώστε να τις αποφύγεις.
bnvdarklord Δημοσ. 23 Δεκεμβρίου 2010 Μέλος Δημοσ. 23 Δεκεμβρίου 2010 Τελικά το bulk δεν εκανε καθως τα strings στο txt δεν ειχαν αυτάκια. Ο καθηγητής μου ειπε να τα βαλω με import αλλα δεν το κατάφερα. Ευτυχως με κατι αλχημίες τύπου find and replace τα εφερα στην μορφή insert into. @_tasos thx δεν θα το σκεφτόμουν.
_tasos Δημοσ. 23 Δεκεμβρίου 2010 Δημοσ. 23 Δεκεμβρίου 2010 By the way, υπάρχει τρόπος να διαβάσεις data από .txt με τη χρήση του OleDb Provider. Μπορείς δηλαδή να γράψεις SQL και να φορτώσεις τις εγγραφές σε ένα dataset ή datatable. Βέβαια, έχεις μόνο τη δυνατότητα για SELECT αλλά και πάλι μου φαίνεται αρκετά καλός τρόπος για να πάρεις δεδομένα από txt. Αν το χρειάζεσαι, πες μου να σου στείλω κανά δυο links σχετικά.
bnvdarklord Δημοσ. 23 Δεκεμβρίου 2010 Μέλος Δημοσ. 23 Δεκεμβρίου 2010 Για πες γιατι το ενα αρχειο ειναι 80ΜΒ και κανει πολύ ωρα τα find replace.
Crizzt Δημοσ. 23 Δεκεμβρίου 2010 Δημοσ. 23 Δεκεμβρίου 2010 Με το Import & Export Data Wizard δε δουλευει;
bnvdarklord Δημοσ. 23 Δεκεμβρίου 2010 Μέλος Δημοσ. 23 Δεκεμβρίου 2010 Εκει πήγα, αλλα εχει 2 επιλογές. Μια για να γραψω SQL και μια που μου λεει οτι δεν εχω visible tables.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.