【问题标题】:BULK INSERT 0 Rows affected批量插入 0 行受影响
【发布时间】:2017-05-02 12:47:44
【问题描述】:

我整个早上都在处理这个问题,但似乎无法弄清楚。我有一个简单的 txt 文件,其中包含以下条目:

1,范瑞恩

2,范达姆

3,范莱因范达姆

我正在尝试使用以下查询导入这些字段:

CREATE TABLE #test
(
    Id INT NOT NULL,
    LastName VARCHAR(MAX) NOT NULL
)

BULK INSERT #test
FROM 'C:\test.txt'
WITH
(
    MAXERRORS = 0,
    FIRSTROW = 1,
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '\r\n'
)

SELECT *
FROM #test 

我已经尝试了我在网络上找到的所有内容。更改分隔符、行终止符、编码、扩展名。我不断收到“0 行受影响”的消息,最后一次选择显然没有返回任何行。

编辑:我使用 Microsoft SQL Server。

请帮忙。

【问题讨论】:

  • 您使用的是 MySQL、MS SQL Server 还是 Sybase?不要标记未涉及的产品。
  • 删除了 MySQL 标签,因为语法不是 MySQL 语法
  • 我使用 MS SQL Server。

标签: sql tsql csv import


【解决方案1】:

可能是一个愚蠢的问题,但您实际上是在使用语法“test.txt”还是使用完全限定的或至少是像“c:\test.txt”这样的完整路径?因为我很确定您需要在这里使用完整路径。

CREATE TABLE #test
(
    Id INT NOT NULL,
    LastName VARCHAR(MAX) NOT NULL
)

BULK INSERT #test
FROM 'C:\test.txt'
WITH
(
    MAXERRORS = 0,
    FIRSTROW = 1,
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '\n'
)

SELECT *
FROM #test 

或者您的文件位于网络上的任何位置(请注意,如果您的 SQL 服务器位于不同的计算机上,您可能需要使用网络路径和/或共享文件夹组合)。

编辑:尝试将您的 ROWTERMINATOR 更新为仅 \n

【讨论】:

  • 是的,我正在使用完整路径。只是简化了这个问题的路径。更新了问题以供澄清。
  • 尝试更改行终止符。如果你有像 Notepad++ 这样的文本编辑器,你可以打开不可见字符,看看你是否真的有 NewLine 或 Return 字符或两者都有。我已经用完整的代码更新了我的答案。我在我的机器上对此进行了测试,它只与 \n 而不是 \r\n 一起工作。
  • 如前所述,我试过这个(可能做错了什么),但不知何故,当我在你回答后尝试它时,它起作用了!谢谢。
猜你喜欢
  • 1970-01-01
  • 2022-01-17
  • 2012-01-30
  • 2015-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
相关资源
最近更新 更多