masteripper:
Υπάρχει και η μπακαλίστικη μέθοδος όπου τραβάς το txt σε μια βάση της Access ,κάνεις τις αλλαγές/διορθώσεις που χρειάζεσαι και το στέλνεις στον SQL.
Επειδή όμως εδώ προσπαθούμε να αποφύγουμε τις μπακαλίστικες μεθόδους, καλό είναι να μην χρησιμοποιούμε ούτε το Excel ούτε την Access για να κάνουμε μία δουλειά την οποία μπορεί να κάνει άνετα οποιαδήποτε βάση δεδομένων. Μπορεί να φαίνεται ότι η "μπακαλίστικη" μέθοδος με το Excel ή την Access είναι εύκολη όταν το κάνουμε σαν άσκηση, είναι όμως εντελώς ακατάλληλα για οποιαδήποτε άλλη χρήση.
Μην ξεχνάμε ότι οι εισαγωγές από txt δεν είναι ποτέ one off. Πρέπει να γίνονται περιοδικά, συχνά καθημερινά, για να ανεβάσουμε στοιχεία από ένα σύστημα και να τα περάσουμε σε άλλο. Γι αυτό υπάρχει το BULK INSERT, για να ανέβουν γρήγορα τα δεδομένα σε ένα προσωρινό πίνακα. Μετά εκτελούμε τα Update, Insert που θέλουμε για να περάσουμε τα δεδομένα στη μορφή που θέλουμε, στους πίνακες που θέλουμε.
Ως τώρα έχουν αναφερθεί δύο πρακτικοί τρόποι γι αυτό το INSERT
- Το BULK INSERT που πρότεινε ο imanos, το οποίο χρησιμοποιείται κατά κόρον όταν θέλουμε να φορτώσουμε δεδομένα απευθείας στη βάση.
- Ένα ενδιάμεσο πρόγραμμα όπως πρότεινε ο gtas, το οποίο θα διαβάσει στοιχεία από διάφορα συστήματα και θα τα περάσει στη βάση. Αυτό χρειάζεται συνήθως όταν δεν μπορούμε να βρούμε εύκολα ένα αρχείο txt σε αναγνώσιμη μορφή (θυμάται κανείς το EBCDIC? Κι όμως υπάρχει στα AS/400!).
Να προσθέσω κι εγώ τα SQL Server Integration Services τα οποία μπορούν να κάνουν ό,τι και το ενδιάμεσο πρόγραμμα χωρίς όμως να βγαίνει κανείς από τον SQL Server.
Η γρηγορότερη μέθοδος πάντως είναι το BULK INSERT, μετά από το οποίο μπορούμε να χρησιμοποιήσουμε SQL απευθείας στα δεδομένα μας και να πετύχουμε αυτό που θέλουμε ευκολότερα και με μεγάλη ταχύτητα.
Υ.Γ. Αν μιλάμε για SQL Server 2008 θα βοηθήσει φοβερά η εντολή MERGE, με την οποία μπορεί κανείς να κάνει update τις υπάρχουσες εγγραφές και Insert τις νέες, με μία μόνο εντολή.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos