2009-04-02 7 views
6

J'ai un fichier CSV avec des délimiteurs de texte de citation. La plupart des 90000 lignes sont bien, mais j'ai quelques lignes qui ont un champ de texte qui contient à la fois un guillemet et une virgule. Par exemple, la valeur des champs serait:Citation d'importation CSV SQL 2005 Délimité avec des guillemets et des virgules internes

AB "AB

Quand Délimité cela devient

"AB"", AB »

Lorsque SQL 2005 tente d'importer ce que je reçois des erreurs telles que ...

Messages 
Error 0xc0202055: Data Flow Task: The column delimiter for column "Column 4" was not found. 
(SQL Server Import and Export Wizard)

Cela semble se produire uniquement lorsqu'une citation et une virgule sont dans une valeur de texte. Des valeurs telles que

AB "AB qui devient "AB"" AB » ou AB, AB qui devient "AB, AB"

beau travail.

Voici quelques lignes par exemple ...

 
"1464885","LEVER WM","","B","MP17" 
"1465075",":PLT-BC !!NOTE!!","","B","" 
"1465076","BRKT-STR MTR   !NOTE!","","B","" 
"1465172",":BRKT-SW MTG !NOTE!","","B","MP16" 
"1465388","BUSS BAR    !NOTE!","","B","MP10" 
"1465391","PLT-BLKHD  ""NOTE""","","B","MP20" 
"1465564","SPROCKET:13TEETH,74MM OD,66MM","ID W/.25"" SETSCR","B","MP6" 
"S01266330002","CABLE:224"",E122/261,8 CO","","B","MP11" 

la dernière ligne est un exemple du problème - la « », provoque l'erreur

Répondre

0

Je voudrais juste faire une recherche/remplacement pour. », et de le remplacer avec,

Avez-vous accès au fichier d'origine?

+0

Non Je n'ai accès qu'au fichier d'importation. Voici quelques exemples de lignes ... "1465564", "PIGNON: 13 DEG. SETSCR "," B "," MP6 " " S01266330002 "," CABLE: 224 "", E122/261,8 CO "," "," B "," MP11 " La deuxième ligne est –

1

Que diriez-vous juste:

  1. Recherche/remplacer tous "", avec ''; (réparer tous les champs brisés)
  2. Rechercher/remplacer tout; ''; with, "", (pour "unfixer" correctement les champs vides.)
  3. Rechercher/remplacer tous les ';' '; avec « », « », (à « détacher » les champs correctement vides qui suivent une encapsulation correcte des délimiteurs intégrés.)

qui convertit votre original:

"1464885","LEVER WM","","B","MP17" 
"1465075",":PLT-BC !!NOTE!!","","B","" 
"1465076","BRKT-STR MTR   !NOTE!","","B","" 
"1465172",":BRKT-SW MTG !NOTE!","","B","MP16" 
"1465388","BUSS BAR    !NOTE!","","B","MP10" 
"1465391","PLT-BLKHD  ""NOTE""","","B","MP20" 
"1465564","SPROCKET:13TEETH,74MM OD,66MM","ID W/.25"" SETSCR","B","MP6" 
"S01266330002","CABLE:224'';E122/261,8 CO","","B","MP11" 

qui semble courir le gantelet bien dans SSIS. Vous devrez peut-être effectuer l'étape 3 de manière récursive pour comptabiliser 3 champs vides d'affilée (''; ''; '' ;, etc.) mais en bout de ligne, lorsque vous avez des qualificatifs de texte incorporés, vous devez soit leur échapper ou les remplacer. Laissez ceci être une leçon dans vos processus de création de CSV à l'avenir.

+0

Dans un autre commentaire, l'OP dit qu'il n'a accès qu'au fichier d'importation, pas à la création CSV, et que votre réponse change les données (guillemets doubles à guillemets simples), ce qui ne résout pas vraiment le problème de l'importation de ces données. – goodeye

4

J'ai eu des problèmes MAJEURS avec SSIS. Des choses qu'Access, Excel et même DTS semblaient très bien faire, SSIS s'étouffe. Les données de longueur d'enregistrement variable sont un autre problème mais, oui, ces qualificatifs intégrés constituent un problème majeur. Surtout si vous n'avez pas accès aux fichiers d'importation car ils sont sur le serveur de quelqu'un d'autre que vous payez pour avoir accès et peuvent même avoir une taille de 4 à 5 Go! Cant juste à un "tout remplacer" sur ce chaque importation.

Vous voudrez peut-être vérifier dans cela Téléchargements Microsoft appelé "UnDouble" et voici un autre workaround vous pourriez essayer.

On dirait qu'avec SSIS dans SQL Server 2008, le bogue est toujours là. Je ne sais pas pourquoi ils n'ont pas abordé cela dans l'analyseur, mais c'est comme si nous sommes retournés dans le temps avec SSIS dans la fonctionnalité d'importation de base.

MISE À JOUR 18-11-2010: Ce bogue existe toujours dans SSIS. Incroyable.

1

Microsoft says Les guillemets doubles dans les champs délimités par des guillemets doubles ne fonctionnent tout simplement pas. Une correction est prévue pour la fin de 2011 ...

En attendant, nous devrons utiliser des solutions de contournement comme décrit dans les autres réponses.

+0

Toujours pas fixé ... – NotMe

Questions connexes