Azure Fabric湖仓SQL端点读取非UTF编码CSV报错问题咨询
非UTF-8编码CSV在Fabric OPENROWSET中的问题与解决方法
问题背景
尝试使用OPENROWSET读取Windows-1252编码的CSV文件,文件包含特殊字符(如Å、Ø):
col1;col2;col3 FRANK;998533805;20.06 FINSÅS KARL;999999;10.05 RØNNING FRANK KARL;999999;7.05
- 不指定编码参数时可读取,但特殊字符显示乱码;
- 添加
PARSER_VERSION = '1.0'和CODEPAGE = '1252'后,执行超时并报错:
...file is incomplete or could not be read. Operating system error code 13(The data is invalid.
UTF-8编码的CSV文件无此问题,疑问Fabric对非UTF编码CSV是否存在已知问题。
问题分析
Fabric中OPENROWSET的旧版解析器(PARSER_VERSION='1.0')对非UTF-8编码的CODEPAGE参数支持存在兼容性问题,解析逻辑冲突会触发错误码13的异常,这是已被反馈的常见场景。
解决方法
1. 切换至新版解析器
使用PARSER_VERSION='2.0',该版本对非UTF编码的处理更稳定,可配合CODEPAGE参数正常读取:
SELECT * FROM OPENROWSET ( BULK 'Files/myfolder/file.csv', FORMAT = 'CSV', FIRSTROW = 2, FIELDTERMINATOR =';', PARSER_VERSION = '2.0', CODEPAGE = '1252' ) WITH ( col1 varchar(100), col2 varchar(100), col3 varchar(100) ) fct
2. 转码为UTF-8后读取
将Windows-1252编码的CSV转码为UTF-8(可通过Notepad++、Power Query等工具完成),再用原无编码参数的逻辑读取,避免编码适配问题。
3. 替换为COPY INTO语句
Fabric的COPY INTO对非UTF编码的支持更可靠,适合批量导入场景:
COPY INTO YourTargetTable (col1, col2, col3) FROM 'Files/myfolder/file.csv' WITH ( FORMAT = 'CSV', FIRSTROW = 2, FIELDTERMINATOR = ';', CODEPAGE = '1252' )
额外提示
- 确保Fabric Workspace对目标文件有读取权限;
- 含特殊字符的列建议使用
nvarchar类型,避免字符丢失; - 若文件带BOM标记,需调整
FIELDQUOTE等参数适配。
内容的提问来源于stack exchange,提问作者ruy
相关产品推荐
相关产品推荐

