2017-06-13 3 views
2

Ich versuche, Masseneinfügung von CSV-Datei durchzuführen.Wie gebe ich null für verpasste Spalten in CSV ein?

MY csv-Datei mit 7 Spalten aber Tabelle enthält 8 Spalten.

Ich kann Massen einfügen mit unten Abfrage durchführen, wenn meine Tabelle nur 8 Spalten hat.

BULK INSERT Table_Name FROM 'E:\file\input.csv' WITH (ROWTERMINATOR = '0x0A',CODEPAGE = 'ACP',FIELDTERMINATOR = ',',KEEPNULLS, ROWS_PER_BATCH = 10000) 

aber meine csv enthält nur 7 Spalten dies unter Fehler führt ..,

Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 1, column 8 (datecolumn). 

Kann mir jemand vorschlagen Weg, dies zu lösen, ohne FORMATFILE zu verwenden?

+1

Ich habe keine Möglichkeit, dies zu tun gefunden, so würde interessieren, zu lernen, wenn es getan werden kann. Was ich getan habe, um dies zu umgehen, besteht darin, eine 'Staging'-Tabelle für die Einfügung aus der Datei zu erstellen, und dann den Rest auszuführen, sobald sie in der "Staging" -Tabelle ist. – Leonidas199x

Antwort

1

Erstellen Sie eine Ansicht mit den 7 Spalten und fügen Sie stattdessen diese Ansicht ein.

Beispiel mit weniger Spalten:

CREATE TABLE test_table(col1 int, col2 int, col3 int) 
go 

CREATE VIEW v_test_table 
as 
SELECT col1, col2 
FROM test_table 

go 

INSERT v_test_table 
SELECT 1,2 

go 

SELECT * FROM test_table 
+0

meinst du Ansicht als Tabelle? –

+1

@ Prabhu hinzugefügt Beispiel zu meiner Antwort –

+0

Danke, es hat perfekt funktioniert –