【问题标题】:Bulk Insert with .txt with or without PK Variable使用 .txt 批量插入,带或不带 PK 变量
【发布时间】:2013-06-27 16:56:34
【问题描述】:

我想在我的 sql-server 数据库中插入一个 .txt 文件数据。我在 .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 我得到错误:

Msg 4864, Level 16, State 1, Line 1 Bulk load 数据转换错误 (指定代码页的类型不匹配或无效字符) 第 1 行,第 1 列 (PK_ID)。消息 2627,级别 14,状态 1,第 1 行违规 PRIMARY KEY 约束“PK_Table”。无法插入重复键 对象'dbo.Table'。重复键值为 (1)。该声明有 被终止了。

.txt 文件内容示例:

PK_ID; VName;NName;用户名;性别
1;史密斯;史密斯;SM;男
2;Tim;Timmer;TI;男

AutoIncrem 已开启。

【问题讨论】:

    标签: sql sql-server tsql


    【解决方案1】:

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

    BULK INSERT DB.Schema.Table FROM 'C:\Users\test.txt' WITH
        (FIELDTERMINATOR = ';',
         FIRSTROW=2)
    GO
    

    【讨论】:

    • 嗨!谢谢你的评论。我试过了,但在两种情况下仍然是相同的错误(有/没有 PK)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多