2016-06-09 32 views
0

Ich habe eine Textdatei mit SSIS generiert. es hat Spaltenbegrenzer "| @; @ |" und der RowDelimiter ist "\ r \ n | \ r \ n". Wie kann ich "OpenRowSet" Abfrage ausführen, um bestimmte Spalten aus dieser Textdatei zu bekommen?OPENROWSET mit benutzerdefinierten Trennzeichen

unten ist die Abfrage i

SELECT a.* FROM OPENROWSET(BULK 'C:\temp\filename.txt',FORMATFILE = 'C:\temp\filename.fmt') AS a; 

und die Formatdatei erste drei Spalten sind wie folgt auszuführen versuchen. aufgrund Zeichenbeschränkung hier

12.0 
32 
1  SQLCHAR    0  21  "|@;@|"  1  DimSiteID               "" 
2  SQLCHAR    0  21  "|@;@|"  2  DimActivityID              "" 
3  SQLCHAR    0  128  "|@;@|"  3  ActivityCategoryCode             Latin1_General_100_CS_AS_KS_WS_SC 

ich bin immer Fehler nicht in der Lage Daten alle Spalten zu schreiben, wie unten:

Msg 4832, Ebene 16, Status 1, Leitung 1 Massenladung: In der Datendatei wurde ein unerwartetes Dateiende gefunden. Msg 7399, Ebene 16, Status 1, Zeile 1 Der OLE DB-Provider "BULK" für Verbindungsserver "(null)" meldete einen Fehler. Der Anbieter hat keine Informationen über den Fehler angegeben. Msg 7330, Ebene 16, Status 2, Zeile 1 Eine Zeile vom OLE DB-Provider "BULK" für den Verbindungsserver "(null)" kann nicht abgerufen werden.

Bitte helfen Sie den Fehler in meiner Anfrage

Antwort

0

wahrscheinlichste Grund für dieses Problem identifizieren konnte Mismatch mit nicht der Spalte in CSV-Datei und Tabellenspalte sein. im Beispiel haben auch die erste Zeile 1 Spalte und die dritte Zeile 2 Spalten ...

+0

Das Problem ist, dass meine Quelldatendatei (Textdatei) Unicode ist. Muss ich irgendetwas in der Openrowset-Abfrage hinzufügen, damit es mit der Unicode-Textdatei funktioniert? – Radhi

+0

Öffnen Sie in Notiz ++ (mit allen Zeichenmodus anzeigen) und überprüfen Sie, ob Sie columndelimiter richtig sind –

Verwandte Themen