2009-10-16 11 views

Répondre

5

Chaque ligne de votre fichier se termine par une nouvelle ligne (\ n) mais les lignes réelles que vous souhaitez obtenir se terminent par des guillemets et une nouvelle ligne. Set ROWTERMINATOR dans la commande BULK INSERT pour:

ROWTERMINATOR = '"\n' 

ÉDITÉ: Je pense que le plus gros problème sera avec des virgules dans le texte. SQL Server n'utilise pas de pièces jointes de texte. Ainsi, la ligne sera divisée par des virgules sans vérifier si la virgule est entre guillemets ou non.

Vous pouvez le faire comme ceci:

BULK INSERT newTable 
FROM 'c:\file.txt' 
WITH 
(
    FIELDTERMINATOR ='",', 
    ROWTERMINATOR = '"\n' 
) 

Cela vous donnera le résultat suivant:

col1 | col2          | col3 
---------------------------------------------------------------- 
"blah | "blah, blah, blah ect, ect     | "column 3 
"foo | "foo, bar, baz more stuff on another line | "another column 3 

Tout ce que vous avez à faire est de se débarrasser des guillemets au début de chaque cellule.

Par exemple:

UPDATE newTable 
SET col1 = RIGHT(col1,LEN(col1)-1), 
    col2 = RIGHT(col2,LEN(col2)-1), 
    col3 = RIGHT(col3,LEN(col3)-1) 

Je pense que vous pouvez aussi le faire en utilisant bcp utility avec format file

+0

ne sera pas que causer des problèmes si elle ne voit pas le dernier "comme – danb

+0

Ceci était la réponse à mon problème, mais j'utilisais l'Assistant d'importation et d'exportation SQL Server. Le délimiteur de ma ligne devait être '" {CR} {LF} ' – Declan

Questions connexes