2009-04-02 12 views
6

Ho un file CSV con delimitatori di testo di virgolette. La maggior parte delle 90000 righe va bene, ma ho alcune righe che hanno un campo di testo che contiene sia una virgola che una citazione. Ad esempio, il valore di campi sarebbe:Quote di importazione CSV SQL 2005 delimitate da virgolette interne e virgole

AB "AB

Quando delimitato questo diventa

"AB"", AB"

Quando SQL 2005 tentativi di importare questo ottengo errori come ...

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

Questo sembra accadere solo quando una virgola e una virgola sono in un valore di testo insieme. Valori come

AB "AB che diventa "AB"" AB" o AB, AB che diventa "AB, AB"

funzionano bene.

seguito alcuni esempi di righe ...

 
"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" 

l'ultima riga è un esempio del problema - il "", causa l'errore

risposta

0

vorrei solo fare una ricerca/sostituzione per.", e sostituirlo con,

Hai accesso al file originale?

+0

No, ho solo accesso al file di importazione. Anche il file è pieno di ", o" ", valido Ecco alcune righe di esempio ... " 1465564 "," SPROCKET: 13TEETH, 74MM OD, 66MM "," ID W/.25 "" SETSCR "," B "," MP6 " " S01266330002 "," CAVO: 224 "" E122/261,8 CO "," "," B "," MP11 " Seconda riga è –

1

ne dite solo:

  1. Ricerca/Sostituisci tutto "", con ''; (correggi tutti i campi danneggiati)
  2. Cerca/sostituisci tutto; ''; con, "", (per "deselezionare" correttamente i campi vuoti.)
  3. Cerca/sostituisci tutti ''; ''; con "", "", (a "unfix" i campi a vuoti che seguono una corretta incapsulamento di delimitatori embedded.)

che converte l'originale a:

"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" 

che sembra correre il guanto di sfida bene in SSIS. Potresti dover ricorrere al passaggio 3 in modo ricorsivo per tenere conto di 3 campi vuoti in una riga (''; ''; '' ;, ecc.) Ma la linea di fondo qui è che quando hai qualificatori di testo incorporato, devi sfuggire a loro o sostituirli. Lascia che questa sia una lezione per i tuoi processi di creazione del CSV in futuro.

+0

In un altro commento, l'OP dice che ha solo accesso al file di importazione, non alla creazione del CSV. Inoltre, la tua risposta modifica i dati (virgolette per virgolette singole), quindi questo non risolve il problema di come importare questi dati. – goodeye

4

Ho avuto MAJOR problemi con SSIS. Cose che Access, Excel e persino DTS sembravano fare molto bene, SSIS soffoca. I dati variabili di lunghezza record sono un altro problema ma, sì, questi qualificatori incorporati rappresentano un problema grave. Soprattutto se non hai accesso ai file di importazione perché sono sul server di qualcun altro che paghi per ottenere l'accesso e potrebbero anche avere dimensioni da 4 a 5 GB! Non posso che "sostituire tutto" in ogni importazione.

Si consiglia di verificare in questo download di Microsoft denominato "UnDouble" e qui è un altro workaround si potrebbe provare.

Sembra con SSIS in SQL Server 2008, il bug è ancora lì. Non so perché non hanno affrontato questo problema nel parser ma è come se fossimo tornati indietro nel tempo con SSIS nella funzionalità di importazione di base.

UPDATE 11-18-2010: Questo errore esiste ancora in SSIS. Stupefacente.

1

Microsoft says doppie virgolette doppie all'interno di campi delimitati da virgolette semplicemente non funzionano. Una correzione è prevista per la fine del 2011 ...

Nel frattempo dovremo utilizzare soluzioni alternative come descritto nelle altre risposte.

+0

Ancora non risolto ... – NotMe

Problemi correlati