>il file di testo è così formato
>
>"500;"200605";45.89;23;67;"S";98
>...............
>
>I campi di testo sono delimitati dal doppio apice i campi numerici
>invece no.
>Il delimitatore di campo è il punto e virgola (;)
Ciao gmt,
La virgoletta a sinistra del numero 500 ti è scappata, vero?
L'hai aperta ma non è mai stata chiusa!
Dato che il formato non è uniforme per tutti i valori (alcuni sono delimitati dai doppi apici altri no), sei costretto a ricorrere ad un file di formato.
Cos'è un file di formato? Un file di testo che definisce il tracciato record del file di testo che devi importare.
Prima di tutto aggiungiamo qualche riga al file di input dati_parz.csv:
500;"200605";45.89;23;67;"S";98
501;"200606";67.12;89;564;"N";155
502;"200607";24.00;41;244;"N";154
503;"200608";39.18;98;3556;"S";4565
504;"200609";99.99;33;96;"N";3644
Ora andiamo a definire la tabella che andrà a contenere i dati:
USE tempdb;
GO
CREATE TABLE dbo.PDW_SARDB(
Col1 int NOT NULL,
Col2 char(6) NOT NULL,
Col3 decimal(4,2) NOT NULL,
Col4 int NOT NULL,
Col5 int NOT NULL,
Col6 char(1) NOT NULL,
Col7 int NOT NULL
);
GO
A questo punto prepariamo il file di formato C:\dati_parz.fmt:
8.0
7
1 SQLCHAR 0 4 ";\"" 1 Col1 ""
2 SQLCHAR 0 6 "\";" 2 Col2 Latin1_General_CI_AS
3 SQLCHAR 0 19 ";" 3 Col3 ""
4 SQLCHAR 0 4 ";" 4 Col4 ""
5 SQLCHAR 0 4 ";\"" 5 Col5 ""
6 SQLCHAR 0 1 "\";" 6 Col6 Latin1_General_CI_AS
7 SQLCHAR 0 4 "\r\n" 7 Col7 ""
Infine non ci resta che eseguire la BULK INSERT verificando che tutto sia andato per il meglio:
BULK INSERT dbo.PDW_SARDB
FROM 'C:\dati_parz.csv'
WITH (FORMATFILE = 'C:\dati_parz.fmt');
GO
/* Output:
(5 row(s) affected)
*/
SELECT *
FROM dbo.PDW_SARDB;
GO
/* Output:
Col1 Col2 Col3 Col4 Col5 Col6 Col7
----------- ------ ------ ----------- ----------- ---- -----------
500 200605 45.89 23 67 S 98
501 200606 67.12 89 564 N 155
502 200607 24.00 41 244 N 154
503 200608 39.18 98 3556 S 4565
504 200609 99.99 33 96 N 3644
(5 row(s) affected)
*/
DROP TABLE dbo.PDW_SARDB;
Sui Books Online troverai tutte le informazioni che ti servono per capire il significato di tutti i parametri che costituiscono un file di formato:
"Using Format Files"
http://msdn.microsoft.com/library/en-us/adminsql/ad_impt_bcp_9yat.asp
>Grazie e scusate
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org