我使用报告工具,需要在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 ...但结果是相同的
答案 0 :(得分:0)
尝试使用ACP转换:
BULK INSERT dbo.tableName from ''
WITH ( ROWTERMINATOR='\n', CODEPAGE = 'ACP' )
答案 1 :(得分:0)
我找到了答案。问题来自不支持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-encoding