我有SQL Server 2014(v12.0.2000)。在该服务器上,我以这种方式执行BULK INSERT
大约200个文件,范围从1 kB到35 MB:
BULK INSERT [MYDB].[dbo].[my_table]
FROM 'C:\Docs\csv\001.csv'
WITH
(FIRSTROW = 1,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
DATAFILETYPE = 'char',
TABLOCK,
KEEPNULLS);
我的.csv
个文件在语法上都是正确的。这样一切都可以工作2天。
之后我突然得到了这个错误:
消息0,级别11,状态0,行0 当前命令发生严重错误。结果(如果有的话)应该被丢弃。
即使先前插入的文件也会被丢弃。当我尝试手动插入一行文件时,也会引发错误。
P.S。我的硬盘上有足够的磁盘空间。
答案 0 :(得分:4)
出现此问题是由于SQL Server 2008,SQL Server 2008 R2,SQL Server 2012或SQL Server 2014中的错误。
建议的解决方案是安装Cumulative Update 1 for SQL Server 2014
可能的解决方案:尝试重建索引
如果错误与BULK INSERT方法
有关SELECT * FROM OPENROWSET('MSDASQL',
'Driver={Microsoft Text Driver (*.txt; *.csv)};
DefaultDir=C:\Docs\csv\;',
'SELECT * FROM 001.csv')
SELECT
*
FROM
OPENROWSET
(
'Microsoft.ACE.OLEDB.12.0','Text;Database=C:\Docs\csv\;IMEX=1;','SELECT *
FROM 001.csv'
) t
答案 1 :(得分:2)
消息0,级别11,状态0,行0.当前命令发生严重错误。结果(如果有的话)应该被丢弃。
查看SQL日志以获取更多详细信息。
12.0.2000。
您正在为SQL 2014运行不受支持的Service Pack级别。在对此类问题进行更多故障排除之前,您应该应用最新的Service Pack:
答案 2 :(得分:0)
您可能有换行符'\ r \ n'。因此,要在.txt文件中定义新行\ r \ n符号。如果在文本编辑器中打开它,您将看不到它们。你必须打开隐形字符模式。您可以使用notepad ++来查看它们。
然后将信息保存在.csv文件中。但.csv对\ r \ n符号没有特殊含义。结果,它们按原样显示。
您必须直接删除代码中的\ r \ n符号。或者,创建一个应用程序(使用C#,VB.NET等)循环遍历文件并为您完成所有工作。几年前,在以前的工作中,我必须做到这一点。