Ich habe eine Tabelle als solche definiert:
CREATE TABLE [dbo].[IpMetadata](
[StartIp] [bigint] NOT NULL,
[EndIp] [bigint] NOT NULL,
[CountryCode] [char](10) NOT NULL,
[ProxyType] [varchar](50) NULL,
[ProxyDescription] [varchar](50) NULL,
[IspName] [varchar](100) NULL,
[MobileCarrier] [varchar](50) NULL,
[MobileCarrierCode] [varchar](50) NULL,
[Latitude] [varchar](50) NULL,
[Longitude] [varchar](50) NULL,
[PostalCode] [varchar](50) NULL,
[City] [varchar](50) NULL,
[Region] [varchar](50) NULL,
[Country] [varchar](50) NULL,
[GmtOffset] [varchar](50) NULL,
[SupportsDaylightSavings] [char](10) NULL,
[MetroCode] [varchar](50) NULL,
[AddressCount] [int] NOT NULL,
CONSTRAINT [PK_IpMetadata] PRIMARY KEY CLUSTERED
(
[StartIp] ASC,
[EndIp] ASC
)
)
Ich habe eine UTF-8-codierte Abtastdatei (D:\data\ipsnip.csv) mit tabulatorgetrennten, CRLF-terminierten Zeilen, die wie folgt in diese Tabelle eingefügt werden sollen:
#start-ip end-ip Edge-two-letter-country proxy-type proxy-description isp-name mobile-carrier mobile-carrier-code Edge-latitude Edge-longitude Edge-postal-code Edge-city Edge-region Edge-country Edge-gmt-offset Edge-in-dst Edge-metro-code address-count
0 0 ** 0 0 0 0 reserved *** *** +9999 n -1 0
1 255 ** 0 0 0 0 reserved *** *** +9999 n -1 254
256 16777215 ** 0 0 0 0 reserved *** *** +9999 n -1 16776959
16777216 16777343 au 0 -37.7596 145.134 3106 templestowe vic aus +1000 n 36211 127
16777344 16777407 au 0 -37.7596 145.134 3106 templestowe vic aus +1000 n 36211 63
16777408 16777471 au 0 -37.7596 145.134 3106 templestowe vic aus +1000 n 36211 63
16777472 16778239 cn chinanet fujian province network 0 26.0786 119.298 350000 fuzhou 35 chn +800 n 156115 767
16778240 16779263 au big red group 0 -37.8387 144.99 3141 south yarra vic aus +1000 n 36206 1023
16779264 16781311 cn chinanet guangdong province network 0 30.6611 104.082 510000 guangzhou 44 chn +800 n 156196 2047
16781312 16785407 jp i2ts inc. 0 35.6838 139.754 100-0001 tokyo 13 jpn +900 n -1 4095
Ich führe den BCP-Befehl folgendermaßen aus:
bcp MyDatabase.dbo.IpMetadata in D:\data\ipsnip.csv -F2 -Slocalhost -n -T
Ich bekomme eine Antwort wie folgt zurück:
Starting copy...
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 11 for SQL Server]Unexpected EOF encountered in BCP data-file
BCP copy in failed
Ich habe versucht, die Spalten- und Zeilenabschlüsse explizit anzugeben. Ich habe versucht, Unicode-Spaltendefinitionen zu verwenden. Ich habe versucht, die Zeilenenden in LF anstelle von CRLF zu ändern. Ich habe versucht, die Feldterminatoren durch Semikolons/Pipes zu ersetzen. Ich habe versucht, -n
und-N
. Ich weiß nicht, was ich sonst noch versuchen soll. Kann jemand helfen?
Es stellt sich also heraus, dass -n
Und -N
nicht sind, was ich wollte; Ich hatte angenommen, dass es die DB-Metadaten verwendet, um die eingehenden Daten implizit zu konvertieren, aber es sieht so aus, als würde es damit Binärdaten erwarten.
Ich habe es in -c
Geändert und es hat ohne Probleme funktioniert.
Jacobs Kommentar unter der Frage hat mir geholfen!
Hat Spalte 1 wirklich einen Hash? Haben Sie es mit nur 1 Datenzeile versucht? > Oder
-w
für Unicode-Zeichen (ich nehme an, Sie haben das überprüft, aber es ist erwähnenswert) - Jacob H7. Juni 17 um 14:37
Hinzufügen von -w
im Code half beim Importieren meiner Dateien.