mercoledì 23 aprile 2014

Utility bcp Sql Server

L'utility bcp.exe, presente nelle installazioni di Sql Server di default, ci può servire per scaricarci i dati di una tabella assieme alla struttura.
Vediamo ad esempio come utilizzarla per creare un file di struttura della tabella e dopo per esportare i dati:

Con il comando

bcp domini.dbo.comuni format nul -f c:\comuni.frm -S 127.0.0.1 -U username-P password-n

Creiamo il file struttura specificando grazie al comando -n i dati nativi (quindi se ci sono campi di tipo data etc.)

Il risultato di questo comando è il seguente file:


10.0
3
1       SQLNCHAR            2       510     ""   1     codice avviamento bancario                               Latin1_General_CI_AS
2       SQLNCHAR            2       510     ""   2     denominazione                                            Latin1_General_CI_AS
3       SQLNCHAR            2       510     ""   3     sigla automobilistica                                    Latin1_General_CI_AS


Per esportare i dati possiamo fare così:

bcp domini.dbo.comuni out c:\comuni.dat -S 127.0.0.1 -U username -P password-c -v

L'opzione -c evita che ci sia il prompt per ogni campo e lo scrive di default come character usando sempre di default come separatore il tab tra un campo e l'altro.
Il risultato sarà di questo tipo (qui uno stralcio):


010009 TORINO TO
012005 AOSTA AO
014001 GENOVA GE
016006 MILANO MI
018002 TRENTO TN
020008 VENEZIA VE
022004 TRIESTE TS
024000 BOLOGNA BO
026005 ANCONA AN
028001 FIRENZE FI
030007 PERUGIA PG
032003 ROMA RM
034009 NAPOLI NA
036004 L'AQUILA AQ
038000 CAMPOBASSO CB
040006 BARI BA
042002 POTENZA PZ
044008 CATANZARO CZ
046003 PALERMO PA
......
......


Per ricaricare i dati su un'altra tabella o un altro db occorre invece eseguire il comando

bcp domini2.dbo.BKCR_DOMANDA  in comuni.dat -f comuni.fmt  -e scarico.log -S 127.0.0.1 -U gianos -P gianos -c

L'opzione -e scrive se necessario dei log di errore.

Si noti che per quanto riguarda lo scarico dei dati (creazione del file .dat) è possibile anche scaricare i dati in base ad una query con il seguente comando:

bcp "select TOP 100 * from domini.dbo.comuni" queryout output.txt -S 127.0.0.1 -U gianos -P gianos -c

Nessun commento:

Posta un commento