我正在尝试从远程位置批量插入.CSV
。
我的SQL语句是:
BULK INSERT dbo.tblMaster
FROM '\\ZAJOHVAPFL20\20ZA0004\E\EDData\testbcp.csv'
WITH (FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n')
我的.CSV
看起来像这样:
john,smith
jane,doe
CSV以UTF-8编码保存,文件底部没有空行。我批量插入的表也是空的。
该表有两列; firstname (nvarchar(max))
和secondname (nvarchar(max))
。
我在服务器上拥有sysadmin
权限,因此有权执行批量插入。
运行SQL时,它运行时没有错误,简单的显示 -
0行受影响
并且不会插入任何信息。
非常感谢任何帮助。
答案 0 :(得分:0)
首先尝试使用bcp.exe
插入文件,看看是否有任何行或任何错误。
BULK INSERT ...
FROM '\\REMOTE\SHARE\...'
您现在正在将模拟和委托安全性带入图片中,并且更难以诊断问题。当您访问这样的远程共享时,您实际上正在进行双跳' Kerberos模拟(aka。委托),您需要特殊的安全设置。请阅读Bulk Insert and Kerberos了解详细信息。
答案 1 :(得分:0)
问题至少部分是UTF-8编码。默认情况下不支持。如果您使用的是SQL Server 2016,则可以指定代码页65001(即将, CODEPAGE = '65001'
添加到WITH
子句中)。如果使用早期版本的SQL Server,则需要先将文件编码转换为UTF-16 Little Endian(在Microsoft Universe中称为“Unicode”)。这可以在保存文件时或通过某个命令行实用程序完成。
答案 2 :(得分:0)
我用Excel打开CSV,然后按Control + S重新保存它。这为我解决了这个问题。