Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用代码页1252将平面文件8859-1编码转换为OLE DB目标_Sql Server_Ssis_Etl_Flat File_Codepages - Fatal编程技术网

Sql server 使用代码页1252将平面文件8859-1编码转换为OLE DB目标

Sql server 使用代码页1252将平面文件8859-1编码转换为OLE DB目标,sql-server,ssis,etl,flat-file,codepages,Sql Server,Ssis,Etl,Flat File,Codepages,输入平面文件用ISO 8859-1编码 数据库具有默认代码页1252 更改代码页以使用数据转换的唯一方法是什么 是的,我知道8859-1和1252非常接近,但我正试图从形式上纠正这一点 我一定错过了什么。似乎我必须使用数据转换,单击每个字段,选择代码页,然后逐个处理字段名的“副本”。这似乎不可信。从平面文件读取数据时,有不同的方法转换代码页: 1-使用不同的代码页保存平面文件: 最简单的方法是使用文本编辑器打开平面文件,然后使用另一种编码进行保存。例如,您可以使用记事本(不确定是否支持1252)

输入平面文件用
ISO 8859-1
编码

数据库具有默认代码页
1252

更改代码页以使用数据转换的唯一方法是什么

是的,我知道
8859-1
1252
非常接近,但我正试图从形式上纠正这一点


我一定错过了什么。似乎我必须使用数据转换,单击每个字段,选择代码页,然后逐个处理字段名的“副本”。这似乎不可信。

从平面文件读取数据时,有不同的方法转换代码页:

1-使用不同的代码页保存平面文件: 最简单的方法是使用文本编辑器打开平面文件,然后使用另一种编码进行保存。例如,您可以使用记事本(不确定是否支持1252)执行此操作:

2-尝试从平面文件连接管理器更改它 尝试从平面文件连接管理器更改代码页,如果代码页之间支持隐式转换,则可能不会影响文本

3-使用派生列转换 可以使用以下表达式添加派生列:

(DT_STR,50,1252)[InputColumn]
4-使用数据转换 正如您提到的,您可以使用数据转换来转换代码页

5-使用暂存表
您可以将数据导入到具有Nvarchar列的表中,然后使用SQL命令将行插入到目标表中(具有varchar列)

谢谢您的回复。1) 这些文件的大小有很多GiB,因此不可能使用编辑器。有一些编码转换工具,比如iconv,但我认为这个组织不允许使用它。2) 平面文件连接管理器上的唯一编码设置传入编码。我可以将其设置为1252,但实际上输入是8859-1.3和4),使用派生列和数据转换都可以在每个字段上逐个单击并为每个字段输入自定义表达式。除了.dtsx文件的XML之外,是否有其他方法可以编辑要使用的文本表示?我不愿意直接编辑.dtsx文件。@我认为没有其他选择。或者,您必须使用BIML、Ezapi或DTS包装程序组件动态构建包。或者简单地尝试将这些数据导入到列类型为nvarchar的临时表中,然后使用SQL查询将它们导入到目标表此项目的当前文件有110、182、58、110、278和52个字段。当然,这只是一个项目。@lit我认为在这种情况下,阶段表方法更可取。这可能是一个使用C#的解决方案。使用以下答案之一转换整个文件。