SSIS:代码页返回到65001

Ama*_*ndo 8 sql-server csv encoding ssis etl

在我正在编写的SSIS程序包中,我有一个CSV文件作为源。在“连接管理器”的“常规”页面上,它具有65001“代码”页面(我正在测试某些东西)。不检查Unicode。

这些列与varchar其他列一起映射到SQL Server目标表。

目的地出现错误:无法处理“ columnname”列,因为为其指定了多个代码页(65001和1252)。

我的SQL列必须为varchar,而不是nvarchar因为其他使用它的应用程序。

然后,在“连接管理器”的“常规”页面上1252 (ANSI - Latin I),将“代码”页面更改为,然后单击“确定”,但是当我再次打开它时,它又回到了65001。是否(仅出于测试目的)我是否检查Unicode都没有影响。

需要注意的是,所有这一切都是在CSV文件和SQL表添加和删除了列(用户知道)之后开始发生的。在此之前,我没有任何问题。是的,我在“高级编辑器”中刷新了OLE DB目标。

这是SQL Server 2012,并且随BIDS和SSIS一起提供。

小智 12

如果要转换为 CSV 文件列文本流 [DT_TEXT] 到 SQL varchar(max) 数据类型,请将平面文件连接管理器编辑器属性代码页更改为 1252(ANSI - 拉丁语 I)。

在此处输入图片说明


Had*_*adi 5

65001代码页= Unicode(UTF-8)

根据此Microsoft文章(平面文件连接管理器)

代码页
指定非Unicode文本的代码页。

您可以通过以下方式配置平面文件连接管理器:

指定要使用的文件,语言环境和代码页。语言环境用于解释对语言环境敏感的数据(例如日期),而代码页用于将字符串数据转换为Unicode。

因此,当平面文件具有Unicode编码时:

然后,无法更改此属性,它将始终返回到其原始编码。

有关代码页标识符的更多信息,请参考本文: