>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