批量加载数据转换错误

时间:2015-12-29 13:33:04

标签: sql-server csv

我有这个问题已经有好几天了,在网上搜索后仍无法修复。如果有人能帮助我,我会非常感激!

这是我得到的错误:

  

消息4864,级别16,状态1,行31批量加载数据转换错误   (为指定的代码页键入不匹配或无效字符)   第12行,第12列(SalesRepEmployeeNumber)。

     

消息4864,级别16,状态1,行31批量加载数据转换错误   (为指定的代码页键入不匹配或无效字符)   第14行,第13栏(CreditLimit)。

继承我的SQL编码 创建表格

CREATE TABLE Customers1
(
    CustomerNumber INT NOT NULL,
    CustomerName VARCHAR(50) NOT NULL,
    ContactLastName VARCHAR(50) NOT NULL,
    ContactFirstName VARCHAR(50) NOT NULL,
    Phone VARCHAR(50) NOT NULL,
    AddressLine1 VARCHAR(50) NOT NULL,
    AddressLine2 VARCHAR(50) NULL,
    City VARCHAR(50) NOT NULL,
    State VARCHAR(50) NULL,
    PostalCode VARCHAR(15) NULL,
    Country VARCHAR(50) NOT NULL,
    SalesRepEmployeeNumber INT NULL,
    CreditLimit MONEY NOT NULL,
    PRIMARY KEY (CustomerNumber)
);

批量插入代码:

BULK INSERT Customers1
FROM 'C:\Customers.csv'
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n')

我尝试导入的文件是csv文件,内容的一些示例是:

124, Mini Gifts Distributors Ltd., Nelson, Valarie, 4155551450, 5677 Strong St.,        San Rafael, CA      ,USA    ,1165   ,210500
125,    Havel & Zbyszek Co  ,Piestrzeniewicz    ,Zbyszek    ,(26) 642-7555  ,ul. Filtrowa 68    ,   Warszawa    ,   01-012, Poland  ,   ,   0

第12行: 144,Volvo Model Replicas,Co,Berglund,Christina,0921-12 3555,Berguvsvägen8,Luleå,, S-958 22,Sweden,1504,53100

第14行: 146,Saveley& Henriot,Co.,Saveley,Mary,78.32.5555,2,rue du Commerce,Lyon,69004,France,1337,123900

2 个答案:

答案 0 :(得分:0)

问题在于:

struct Bar {
    env1: u8,
    // ev is not generit, it explicitly takes a Bar
    ev: fn(a: &Bar) -> bool
}

// the trait defers to the fn stored in the struct
impl Ev for Bar {
    fn ev(&self) -> bool { (self.ev)(&self) }
}

在你的第二个字段中有一个逗号,也是你的分隔符。

要修复,请删除这些逗号(生成文件时),或引用如下字段:

144, Volvo Model Replicas, Co, Berglund
146, Saveley & Henriot, Co., Saveley

您可能也想检查其他字段,例如:

144, "Volvo Model Replicas, Co", Berglund
146, "Saveley & Henriot, Co.", Saveley

您可能还想删除字段周围的空格,或者在需要的地方引用它们 - 某些解析器可能会遇到前导空格的问题。还要检查原始数据,看看是否没有特殊的隐藏字符。

另外,请确保其他行中没有任何多行字段,因为这可能会导致格式错误的字段发生更多变化。

答案 1 :(得分:0)

你似乎确实遇到了数据问题,正如@Danny_ds指出的那样,但仅凭这一点并不能解释你的错误。只看你的样本集,我没有看到任何关于数据加载的明显问题(根据我对@ Danny_ds的帖子的评论)我认为你在这里加载的数据最终会变得很糟糕。

有些人猜测发生了什么:

  • 可能会出现“欧元字符”(例如ä和å)。我在这里主要是通过恐惧和无知来讲话,很少有几次我不得不面对这样的问题,我总是在我的以美国为中心的编码工具中遇到麻烦。
  • 前面的行中可能存在问题,这些问题会延续到这些行。
  • 您的行尾标记有多确定?调试时,“行尾”字符问题可能非常糟糕; “/ n”实际上不是字符,如果不存在ascii 13 + 10中的任何一个,那么你可能处于一个痛苦的世界。 (而且它们都必须在每一行都存在 - 也许发电系统或文件传输系统会削减一些东西?)

“调试”这样的东西的一种方法是分解你的导入文件。制作副本,删除行,看它是否仍然加载,然后重复。例如,尝试使用以下命令加载文件:

  • 11删除后的所有行
  • 第12和14行已删除
  • 最多10行,然后是11行,删除
  • 只有第12和第14行出现

执行此操作,您可以缩小问题实际出现的位置。祝你好运!