Export Dati da una Tabella di MS SQL Server in un file CSV

OBIETTIVO:

esportare una Tabella di ca. 42 milioni di righe per 4 colonne da un database su Microsoft SQL Server 2005 Developer Edition in un file CSV (.csv).

PROBLEMA:

utilizzando Matlab con Driver MS SQL Server  e query del tipo [SELECT * FROM tabella] il tempo stimato è 10.000 righe/sec. Tempo totale stimato di esportazione 11h 39 m. Il processo si arresta per Out of Memory (Java Heap Space).

SOLUZIONE:

utilizzare la BCP utility [link]. BCP (bulk copy) è una utility (.exe) di MS SQL Server in grado di importare/esportare enormi quantità di righe in blocchi. L’Export prevede una modalità [out] per l’intera tabella selezionata oppure [queryout] se si desidera esportare solo porzioni della tabella, utilizzando il linguaggio T-SQL. L’utility è eseguibile da Terminale Windows (cmd.exe) .

ESEMPIO:

bcp database_name.schema.table_name out c:\output_file.csv -c -t , -U login_id  -P password -S server_name\instance_name

Il processo carica 1.000 righe a blocco di default. Il risultato è di 528.000 righe/sec pari ad 1 m e 20 s. Il sistema con BCP  è quindi di 52,8X il sistema con query su Matlab. Non ci sono differenze sostanziali tra un [bcp … out …] e un [bcp … queryout …]. In entrambi i casi si ottengono i risultati come sopra. Con la funzionalità [queryout] si posso creare delle Store Procedures più complesse.

Un Commento

  1. Pingback: Export Dati da una Tabella di MS SQL Server in un file CSV usando BCP utility e Stored Procedures | Primi Appunti

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...