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)。
65001代码页= Unicode(UTF-8)
代码页
指定非Unicode文本的代码页。
也
您可以通过以下方式配置平面文件连接管理器:
指定要使用的文件,语言环境和代码页。语言环境用于解释对语言环境敏感的数据(例如日期),而代码页用于将字符串数据转换为Unicode。
因此,当平面文件具有Unicode编码时:
然后,无法更改此属性,它将始终返回到其原始编码。
有关代码页标识符的更多信息,请参考本文: