web-dev-qa-db-fra.com

BCP malheurs: inattendu EOF rencontré dans le fichier de données BCP

J'ai une table définie comme telle:

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
    )
)

J'ai un fichier d'échantillonnage encodé en UTF-8 (D:\data\ipsnip.csv) avec des lignes terminées par des tabulations et CRLF à insérer dans ce tableau comme suit:

#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

J'exécute la commande BCP comme suit:

bcp MyDatabase.dbo.IpMetadata in D:\data\ipsnip.csv -F2 -Slocalhost -n -T

Je reçois une réponse comme ceci:

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

J'ai essayé de spécifier explicitement les terminateurs de colonne et de ligne. J'ai essayé d'utiliser des définitions de colonne unicode. J'ai essayé de changer les fins de ligne en LF au lieu de CRLF. J'ai essayé de remplacer les terminateurs de champ par des points-virgules/tuyaux. J'ai essayé -n et-N. Je ne sais pas quoi essayer d'autre. Quelqu'un peut-il aider?

4
Jeremy Holovacs

Il s'avère donc que le -n et le -N sont pas ce que je voulais; J'avais supposé qu'il utilisait les métadonnées db pour convertir implicitement les données entrantes, mais il semble qu'il attende des données binaires avec cela.

Je l'ai changé en -c et cela a fonctionné sans problème.

2
Jeremy Holovacs

Le commentaire de Jacob sous la question m'a aidé!

La colonne 1 contient-elle vraiment un hachage? Avez-vous essayé avec seulement 1 ligne de données? > Ou -w pour les caractères unicode (je suppose que vous avez vérifié cela mais que vous avez pensé qu'il vaut la peine de le mentionner) - Jacob H7 juin 17 à 14:37

Ajouter -w dans le code a aidé à importer mes fichiers.

0
user183173