2

我想将 .txt 文件数据插入到我的 sql-server 数据库中。我在 .txt 文件中使用和不使用 PK-Variable 都尝试过,两者都给了我一个错误。我的查询:

从'C:\ Users \ test.txt'批量插入DB.Schema.Table
(FIELDTERMINATOR =';')去

  1. 没有 PK Var 我得到错误:

第 1 行第 1 列 (PK_ID) 的批量加载数据转换错误(指定代码页的类型不匹配或无效字符)。消息 4864,第 16 层,状态 1,第 1 行

  1. 使用 PK Var 我得到错误:

消息 4864,级别 16,状态 1,第 1 行第 1 行第 1 列 (PK_ID) 的批量加载数据转换错误(指定代码页的类型不匹配或无效字符)。消息 2627,级别 14,状态 1,第 1 行违反主键约束“PK_Table”。无法在对象“dbo.Table”中插入重复键。重复键值为 (1)。该语句已终止。

.txt 文件内容的示例:

PK_ID;VName;NName;用户名;性别
1;Smith;Smither;SM;男
2;Tim;Timmer;TI;男

自动增量已打开。

4

2 回答 2

1

我的解决方案:我无法解决上述问题。一些人说将 ID 作为列名放入 txt 文件并保持条目打开(如(,Hans,Maier)),对我没有用。我发现正确的方法是创建一个临时表。临时表只是一个没有主键的普通表,您可以在其中批量插入数据。在这里,您可以根据需要操作数据。之后,您将该临时表中的数据插入到您想要的表中。从一个表插入数据到另一个表很好地描述了如何做到这一点。好消息是您可以更新表,因为批量插入只是为您提供插入数据而不更新的选项。

于 2013-06-28T07:36:14.350 回答
1

查看您的示例 .txt。文件内容,我认为您正在将标题作为一行加载到表中。尝试:

BULK INSERT DB.Schema.Table FROM 'C:\Users\test.txt' WITH
    (FIELDTERMINATOR = ';',
     FIRSTROW=2)
GO
于 2013-06-27T18:08:33.913 回答