webentwicklung-frage-antwort-db.com.de

BCP-Probleme: Unerwartet EOF in BCP-Datendatei aufgetreten

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?

4
Jeremy Holovacs

Es stellt sich also heraus, dass -n Und -Nnicht 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.

2
Jeremy Holovacs

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.

0
user183173