Bulk Insert

martedì 18 dicembre 2007 - 17.40

gae58 Profilo | Senior Member

salve,

uso il comando bulk insert per valorizzare una tabella attraverso un file csv.

Il comando funziona, tranne che nel passaggio di un campo logico.
Nel file csv l'ultimo campo del rigo è dato dalla scritta false.
Nella tabella di MS Sql 2005, la colonna è di tipo bit.

Qualcuno mi sadire dove sbaglio?

Ho levato la colonna bit e tutto funziona bene

grazie


Gaetano

lbenaglia Profilo | Guru

>Il comando funziona, tranne che nel passaggio di un campo logico.
>Nel file csv l'ultimo campo del rigo è dato dalla scritta false.
>Nella tabella di MS Sql 2005, la colonna è di tipo bit.
>
>Qualcuno mi sadire dove sbaglio?

Ciao Gaetano,

il data type bit accetta solo i valori 0, 1 o NULL.
I Books Online riportano: "The string values TRUE and FALSE can be converted to bit values: TRUE is converted to 1 and FALSE is converted to 0".
Questo è verissimo, come dimostrato dal seguente esempio:

USE tempdb; CREATE TABLE dbo.T( ID int NOT NULL PRIMARY KEY, BoolValue bit NOT NULL ); INSERT dbo.T VALUES(1, 'TRUE') INSERT dbo.T VALUES(2, 'true') INSERT dbo.T VALUES(3, 'FALSE') INSERT dbo.T VALUES(4, 'false') SELECT * FROM dbo.T; /* Output: ID BoolValue ----------- --------- 1 1 2 1 3 0 4 0 (4 row(s) affected) */

Però questa conversione implicita decade nelle operazioni di tipo BULK.
Per aggirare il problema puoi procedere in due modi:

- Editare il file di input sostituendo 0 alla stringa "false";
- Non imporare l'ultima colonna assegnando il valore 0 tramite un constraint DEFAULT.

>grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

gae58 Profilo | Senior Member

ti ringrazio, ancora non riesco a leggere tutto per bene.

Comunque sto seguendo il tuo consiglio sui book onLine, effettivamente c'è tutto, ma c'è bisogno di tempo anche per capire come studiare.

Di nuovo grazie


Gaetano
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5