我有一个 18GB 的平面文件(40,000,000 条记录),具有固定的列宽(无字段终止符),我想将其读入 SQL Server 2008 R2 表。除了包含数据的文本文件之外,我还获得了一个包含字段名称和长度的 Excel 文档。有 270 个字段,每条记录(每行)总共 465 个字符。使用 bcp 我创建了一个 fmt 文件,对我来说看起来不错。
10.0
270
1 SQLCHAR 2 1 "" 1 TitleCode SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 2 12 "" 2 FamilyID SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 2 12 "" 3 LocationID SQL_Latin1_General_CP1_CI_AS
等等
在 SQL Server 中,我想使用这个 fmt 文件将数据读入表中:
BULK INSERT dbo.Customer2_noId
FROM 'C:\Uploads\dataFile_MICX\dataFile_MICX_Copy.txt'
WITH (FORMATFILE = 'C:\Users\kriss\SqlScripts\Customer2_noId-n.fmt');
GO
来自 SQL Server 的错误消息:
消息 4866,第 16 级,状态 7,第 1 行
批量加载失败。数据文件中第 1 行第 1 列的列太长。请验证是否正确指定了字段终止符和行终止符。
消息 7399,第 16 层,状态 1,第 1 行
链接服务器“(null)”的 OLE DB 提供程序“BULK”报告了错误。提供商没有提供有关该错误的任何信息。
消息 7330,第 16 层,状态 2,第 1 行
无法从链接服务器“(null)”的 OLE DB 提供程序“BULK”中获取行。
我尝试将最后一个字段的归档终止符更改为“\r”和“\r\n”我尝试在底部添加一个额外的字段:
271 SQLCHAR 0 0 "\r\n" 271 dummy SQL_Latin1_General_CP1_CI_AS
没什么区别。
我一直无法在网上找到任何有帮助的东西。(建议在 fmt 文件中使用额外的空白行,但这并不能解决问题。我认为数据文件有行终止符,因为如果我使用 Excel 数据导入工具,我会看到一致长度的行。
有人可以帮忙吗?谢谢,克里斯