BCP gibt keine Fehler zurück, kopiert aber auch keine Zeilen
Ich versuche, eine sehr große Menge von Daten aus einer CSV-Datei in eine SQL Server 2012-Datenbank zu sichern. Anstatt Tausende von INSERTs zu machen, untersuche ich esbcp
.
BEARBEITEN: Dies ist ein automatisierter Prozess und nicht nur ein einmaliger. Habe ich auch nichtBULK INSERT
Rechte an dieser Datenbank.
Wenn ich versuche, Daten in die Datenbank zu kopieren,bcp
Gibt keine Fehler zurück, kopiert aber auch nichts - es kommt nur zurück0 rows copied
. Ich habe das auf ein Minimum reduziert, das nicht funktioniert.
Erstellen Sie zunächst eine einfache Tabelle mit zwei Spalten:
CREATE TABLE [dbo].[mincase](
[key] [varchar](36) NOT NULL,
[number] [int] NOT NULL
PRIMARY KEY CLUSTERED
(
[key] ASC
)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 40) ON [PRIMARY]
) ON [PRIMARY]
GO
Dann benutzebcp
um daraus eine Formatdatei zu erstellen. Beachten Sie, dass in diesem Beispiel eine XML-Formatdatei erstellt wird, es jedoch keine Rolle spielt, ob es sich dabei um XML oder um eine native Datei handelt.
bcp MyDB.dbo.mincase format nul -T -n -f mincasexml.fmt -x -S .\SQLEXPRESS
Erstellen Sie nun eine Datei data.csv mit einer Zeile und zwei durch Tabulatoren getrennten Einträgen. In meinem Fall ist die Datei einfach:
somecharacters 12345
Auch dies ist ein Tabulator, keine zwei Leerzeichen, und es scheint keine Rolle zu spielen, ob nachgestellte Zeilenumbrüche vorliegen oder nicht.
Versuchen Sie nun zu verwendenbcp
mit dieser Formatdatei, um die Daten aus dieser Datei einzufügen:
bcp MyDB.dbo.mincase in data.csv -f mincasexml.fmt -T -S .\SQLEXPRESS
Anstatt Daten in die Datenbank zu kopieren, erhalte ich Folgendes:
Starting copy...
0 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total : 1
Weiß jemand, was hier los ist?
Vielen Dank!