【发布时间】:2020-05-17 07:39:47
【问题描述】:
我正在使用 SQL Server 2017。我正在尝试将BULK INSERT 插入 SQL Server 中的一些 .DAT 文件,这些文件用 Pilcrow (¶) 分隔,用于列和 Lower Case Thorn (þ) 用于文本(这是电子发现平台中常见的分隔符格式)。以下是数据文件的示例:
我的理解是我需要一个格式文件来执行此操作。我创建了以下 FMT 文件(注意我有一个“虚拟”行,它添加了前面的文本分隔符):
然后我运行以下 SQL 语句:
BULK INSERT [dbo].[tblERRORS]
FROM 'C:\Users\myName\Documents\Errors\ErrorFile.dat'
WITH (FirstRow = 2, FORMATFILE = 'C:\Users\myName\Documents\Errors\Errors.fmt');
GO
我收到以下错误:
消息 4832,16 级,状态 1,201 行
批量加载:在数据文件中遇到了意外的文件结尾。消息 7399,16 级,状态 1,201 线
链接服务器“(null)”的 OLE DB 提供程序“BULK”报告了错误。提供者没有提供有关错误的任何信息。消息 7330,16 级,状态 2,201 线
无法从链接服务器“(null)”的 OLE DB 提供程序“BULK”中获取行。
注意:我还尝试将 FMT 文件中的最后一行更改为“þ\r\n”,但这不起作用。
任何建议将不胜感激。
谢谢。
【问题讨论】:
-
@vitaut:不知道为什么会被否决?你能提供一些澄清吗?谢谢。
-
不要在记事本中查看文件。您需要使用更好的文本编辑器/查看器。正如我在下面的解决方案中所述,“这假设每行的最后两个字节确实是 \r\n”。您可以使用诸如 ultraedit 或 Notepad++ 之类的东西查看文件吗?会显示隐藏字符的东西(可能需要通过选项启用它们的视图)。
-
将“þ”添加到您的行终止符确实“有效”。你真的需要那个。但还有其他问题。
标签: sql-server bulkinsert bcp