我遵循了这一过程:
然后运行以下查询:
select * from openrowset(bulk 'C:\HelloWorld.txt',single_clob) as test文本出现在名为:BulkColumn的列中。
然后我这样做:
然后运行以下查询:
select * from openrowset(bulk N'C:\HelloWorld.txt',single_nclob) as test我得到的错误是:
SINGLE_NCLOB需要一个UNICODE (widechar)输入文件。指定的文件不是Unicode。
为什么会这样呢?
发布于 2016-01-28 08:00:03
您需要反复检查如何保存"Unicode“文件。在Windows / .NET / Server中,"Unicode“一词指的是"UTF-16 Little Endian (LE)”。当处理UTF-16大端( be )时,它将被称为"Unicode大端“或”大端Unicode“。UTF-8永远是UTF-8。
我在记事本中创建了一个文件,转到“另存为”,并从"Encoding“下拉列表中选择了"Unicode”,您使用的语句运行得很好:
SELECT *
FROM OPENROWSET(BULK N'C:\temp\OPENROWSET_BULK_NCLOB-test.txt', SINGLE_NCLOB) AS [Test];如果我用任何其他编码重新保存它,我将得到您正在看到的错误消息。
我还使用了Notepad++,并在“编码”菜单中选择了"Encode in UCS-2 Little Endian“。UCS-2和UTF-16对于代码点U+0000通过U+FFFF是相同的,并且在Notepad++中没有UTF-16选项,所以这是最近的事情。是的,也起作用了。
因此,您实际上并没有将文件保存为"Unicode“。如果您在记事本中选择了"Unicode大端“,就Windows使用该术语的方式而言,这不是" Unicode”,即使它是有效的Unicode编码。
https://stackoverflow.com/questions/35048884
复制相似问题