我有一个大约20列的csv文件(200,000行)。其中一列可以包含大量文本数据。
我尝试用openrowset批量读取csv并使用格式文件。大文本列在格式文件中具有varbinary(max)。
这是我使用的命令:
SELECT *
FROM OPENROWSET(BULK 'F:\Source.csv', FORMATFILE='F:\Source.fmt',
ERRORFILE = 'F:\Bulk_log.txt', FIRSTROW = 2) as t1
在其中一行上我收到以下错误:
Msg 4866,Level 16,State 1,Line 4
批量加载失败。第119426行第4列的数据文件中的列太长。验证是否正确指定了字段终止符和行终止符。Msg 7399,Level 16,State 1,Line 4
链接服务器“(null)”的OLE DB提供程序“BULK”报告错误。提供商未提供有关错误的任何信息。Msg 7330,Level 16,State 2,Line 4
的行
无法从OLE DB提供程序“BULK”获取链接服务器“(null)”。
当我查看导致问题的行时,大文本字段有69.339个字节的数据。
使用errorfile选项,它会显示问题从66.367字节开始。
openrowset和bulk是否可以从大字段读取的最大字节数有限制?
奇怪的是;当我将导致问题的行复制到包含单个问题行的单独csv文件时,一切正常.....
我也尝试用SSIS读取数据,一切都运行良好。 但我想坚持使用'基本'SQL服务器(2014),而不是将我的加载方法移到SSIS。
我该如何解决这个问题?