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
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
Öffnen Sie in Notiz ++ (mit allen Zeichenmodus anzeigen) und überprüfen Sie, ob Sie columndelimiter richtig sind –