file ascii del tipo :
prima riga = intestazione campi
seconda riga = dati
COLONNA1 COLONNA2
CODICE DESCRIZIONE
e importo in una tabella così definita:
COLONNA1 varchar(50)
COLONNA2 varchar(MAX)
finchè il dato che va nella seconda colonna ( DESCRIZIONE ) non supera
i 20 caratteri circa allora l'import viene eseguito con successo.Es:
contenuto file:
COLONNA1 COLONNA2
A La difettosita La difettositaLaLa
se il dato che va nella seconda colonna ( DESCRIZIONE ) supera i 20
caratteri allora sql resituisce un errore e non esegue l'import :
contenuto file:
COLONNA1 COLONNA2
A La difettosita La difettositaLaLaLa difettosita
La difettositaLaLa
Errore:
impossibile eseguire la conversione dei dati.La conversione dei dati
per la colonna "COLONNA1" ha restituito il valore di stato 4 e il
testo di stato "testo troncato oppure impossibile trovare
corrispondenze per uno o più caratteri nella tabella codici di
destinazione"
ciao Maurizio
Come esegui l'importazione?
Supponiamo di avere il seguente file D:\Input.txt con il tab come separatore
di colonna ed un CR+LF come separatore di riga:
<BOF>
COLONNA1 COLONNA2
CODICE 1 DESCRIZIONE
CODICE 2 DESCRIZIONE DI MOLTI CARATTERI
<EOF>
Il seguente esempio utilizza una banalissima BULK INSERT per popolare la
tabella e come puoi vedere importa correttamente anche la seconda riga che
supera i 20crt:
USE tempdb;
CREATE TABLE dbo.foo(
c1 varchar(50) NOT NULL,
c2 varchar(max) NOT NULL
);
BULK INSERT dbo.foo
FROM 'D:\Input.txt'
WITH (
DATAFILETYPE = 'char'
, FIRSTROW = 2
, TABLOCK
);
SELECT *
FROM dbo.foo;
/* Output:
c1 c2
--------- --------------------------------
CODICE 1 DESCRIZIONE
CODICE 2 DESCRIZIONE DI MOLTI CARATTERI
(2 row(s) affected)
*/
DROP TABLE dbo.foo;
!!del D:\Input.txt
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo
http://social.technet.microsoft.com/Forums/it-IT/sqlserverit
Ti ringrazio molto per l'aiuto.
ciao Maurizio