Tsql 使用t-sql大容量插入时出现意外字符

Tsql 使用t-sql大容量插入时出现意外字符,tsql,Tsql,我正在使用一个报表工具,它需要在sql中加载文本文件。但我有个问题。我搜索了一下,却找不到答案。我尝试了一些方法,但问题依然存在。 所有txt文件都采用utf编码 我使用的是t-sql的大容量插入语句 IF OBJECT_ID ( 'dbo.tableName','U') IS NOT NULL DROP TABLE dbo.tableName CREATE TABLE tableName ( line nvarchar(50) ); BULK INSERT dbo.tableName from

我正在使用一个报表工具,它需要在sql中加载文本文件。但我有个问题。我搜索了一下,却找不到答案。我尝试了一些方法,但问题依然存在。 所有txt文件都采用utf编码

我使用的是t-sql的大容量插入语句

IF OBJECT_ID ( 'dbo.tableName','U') IS NOT NULL
DROP TABLE dbo.tableName
CREATE TABLE tableName ( line nvarchar(50) );
BULK INSERT dbo.tableName from 'file_with_path.txt'
WITH ( ROWTERMINATOR='\n' ) 
select * from dbo.tableName
最后我得到了这些线

(对不起!我不能上传图片。我没有声誉:()

怎么了

注意:我也尝试了列中的数据类型
varchar,text…但结果相同

尝试使用ACP转换:

BULK INSERT dbo.tableName from ''
WITH ( ROWTERMINATOR='\n',   CODEPAGE = 'ACP' )

我找到了答案。问题来自不支持utf-8的openrowset。 我用临时表直接大容量插入,现在我可以毫无问题地读取utf-8编码的文件

CREATE TABLE #temp
(
    lines nvarchar(max) NULL
)
BULK INSERT #temp
FROM 'c:\my\test.txt'
WITH(ROWTERMINATOR = '', CODEPAGE='65001')
SELECT * FROM #temp
DROP TABLE #temp
代码页65001是UTF-8
text.txt文件是utf编码的

Jayvee。谢谢你的回复。我尝试过,但不起作用。同样的问题也存在。你能发布数据文件的示例吗?好的。这是示例文件的链接抱歉,我现在无法下载,但如果你只是将前几行粘贴到这里作为文本,我会尝试复制错误Jayvee,你可以创建使用utf-8编码的简单txt silfe。用数字填充文件中的一些行,然后尝试运行上述查询。这是我的第一行“123”(不带引号)您使用的是什么版本的sql?当我尝试它时,我得到以下信息:Msg 2775,级别16,状态13,第5行服务器不支持代码页65001。Jayvee,我使用的是版本9.00.4035.00,Microsoft sql server 2005标准版,平台NT INTEL X86,默认服务器排序规则为Jayvee,你的txt文件也必须是utf-8。如果你需要,你可以给我发一封电子邮件。好的,这就解释了。因为SQL server 2005支持codepage='65001',但2008年及更高版本不支持。我甚至在SQL server 2014 CTP2上试用过,但仍然不起作用。升级时需要小心,因为这会停止工作。