我需要能够bulk insert
进入SQL Server 2016实例(13.0.4224.16-FORMAT
和FIELDQUOTE
属性不可用)上的特殊字符作为字段定界符,并能够还包括数据集中可能存在的任何Unicode字符。我正在尝试使用¿
(十六进制0xBF)或我知道不在数据集中的任何字符作为字段定界符。
我有一个UTF-8
编码的test.txt
文件,其中包含一些测试数据(数据集中的标题除外):
foo¿bar¿foobar¿
\n < last line
和要插入的TSQL语句:
BULK INSERT [dbo].[testTable]
FROM 'C:\Datasource\test.txt'
WITH (KEEPNULLS,
MAXERRORS=0,
FIELDTERMINATOR='0xBF');
进入此表:
create table [dbo].[testTable](
col1 nvarchar(50),
col2 nvarchar(50),
col3 nvarchar(50),
col4 nvarchar(50)
)
当我在select
上运行testTable
时,它将返回:
col1 col2 col3 col4
foo┬ bar┬ foobar┬ NULL
为什么显示这些┬
个字符?我猜这是我的分隔符编码错误并包含在数据中吗?如果将定界符更改为|
,我可以毫无问题地获取数据,但它存在于我的数据集中,并且会进一步破坏插入内容。我尝试添加CODEPAGE=65001
,它使用管道定界符毫无问题地导入Unicode字符,但是使用特殊字符定界符会导致以下错误:
大容量加载:数据文件中出现意外的文件结尾。
编辑:
我已将导入txt
文件更改为UTF-16
编码,但仍然遇到相同的问题。