2010-10-18 10 views
5

Ogni tanto mi trovo a digitare uno script unico per importare alcuni dati CSV in un database, eseguendo alcune regole di colonna (ad esempio, trasformare column3 in maiuscolo) e/o mappatura dei campi (la colonna 2 nel csv passa alla colonna 3 nel database, ecc.).ottimo strumento per importare rapidamente alcuni dati csv nel server sql

C'è un bel strumento che può semplificare?

il minor numero di caratteristiche che avevo bisogno è:

  • scelta delimitatore
  • Essere in grado di mappare colonna di X a Y colonna nel DB
  • impostazione di default per le colonne non nel file CSV

SQL server management studio può quasi farlo, tranne uno non può specificare valori predefiniti per valori che non sono elencati nel file csv. Quindi dovrei creare prima colonne extra in excel.

risposta

7

dare un'occhiata a 6 ways to import data into SQL Server per alcune idee, penso che SSIS sarebbe la soluzione migliore ... ma c'è una curva di apprendimento. Oppure BCP in una tabella di staging, massaggiare i dati e quindi importare la tabella reale

1

Sql Server Integration Services (SSIS) è lo strumento che di solito uso per tali scopi. La cosa bella di uno strumento come questo è che è molto veloce, flessibile e puoi controllare le dimensioni del batch.

1

fare clic con il pulsante destro del mouse sul database, selezionare Task> import Data e seguire la procedura guidata per importare i dati. È un modo piacevole e più semplice. Anche guardare seguente:

http://blog.sqlauthority.com/2008/02/06/sql-server-import-csv-file-into-sql-server-using-bulk-insert-load-comma-delimited-file-into-sql-server/

+0

ho parlato di questo strumento nella mia interrogazione. Lo svantaggio di questo strumento è che non consente di fornire valori predefiniti per le colonne che sono nel DB ma non nel CSV – Toad

+0

Accetto, è sempre possibile aggiornare la tabella dopo l'importazione, o posizionare il vincolo predefinito alle colonne sarà facilmente risolto esso. –

+0

Attività-> Importa inoltre non gestisce il CSV quotato, necessario per alcuni codici postali statunitensi, che può iniziare con zero o codici di contabilità generale legacy spesso riempiti a zero. – Tim

5

Lo strumento definitivo "migliore" per l'importazione e l'esportazione dei dati da e verso SQL Server è, a mio parere, il BCP utility.

NON lasciatevi scoraggiare dal fatto che non è disponibile un'interfaccia utente grafica. Questo strumento espone la più ampia gamma di funzionalità al codificatore e offre anche le migliori prestazioni di tutti gli strumenti ETL di SQL Server.

3

Come dici tu stai cercando uno strumento per farlo: ne forniremo uno che riterrò molto interessante, in quanto gestirà i valori predefiniti così come la convalida e il caricamento nella tabella e nelle colonne scelte.

Lo strumento controllerà i tipi di dati rispetto alla destinazione, quindi convaliderà l'importazione raggruppando le righe o l'intero dato all'interno di una transazione e segnalando eventuali problemi a ogni riga.

C'è un post specifico in materia di importazione CSV utilizzando lo strumento: http://leansoftware.net/tabid/123/g/posts/t/17/Validate-and-Upload-CSV-file-to-a-database.aspx

0

Per quello che vale, ho scritto this piccolo script python che fa esattamente questo (e un paio di cose). Fondamentalmente analizza i file CSV e scrive le istruzioni SQL insert. È anche possibile creare più record correlati in tabelle diverse da una singola riga csv. Tutto quello che devi fare è specificare cosa va dove e come le cose sono correlate.

una specifica di importazione per un tavolo 'reparto' potrebbe essere qualcosa di simile:

DEPARTMENT_MAP = { 
    '_oid':    DynamicValue(OidFactory()),     # Compute _oid dynamically 
    '_publicobj_oid': XReference('publicobject', 'sole', '_oid'), # Copy _oid value from 'sole' instance in 'publicobject' table 
    'name':    ColumnValue('Department', convert=quote), # Read from csv and put into quotes 
    'building_no':  ConstValue('5')        # Always 5 
    'floor':   ColumnValue('Floor', convert=upper)   # Read from csv and convert to upper case 
} 
Problemi correlati