为什么SSIS错误地加载了我的撇号?

时间:2015-04-03 20:26:30

标签: unicode ssis character-encoding

我有一个文本文件,其中包含以下数据的字段:

Australian Children’s Television Fo ;

当我将它加载到sql server表时,它将其加载为

Australian Children’s Television Fo ;

为什么撇号会被加载为那些特殊字符?

我尝试将它们作为unicode字符串读取并使用nvarchar作为表中的数据类型。它都不起作用。

1 个答案:

答案 0 :(得分:1)

适合我。

enter image description here

我把你的文字粘贴到一个新文件中并用TextPad称为“Unicode”编码(小端)保存,因为还有“Unicode(大端)”选项。您可以在Visual Studio中使用另存为Unicode(带签名的UTF-8) - 代码页65001或Unicode代码页 - 1200获得相同的效果。

enter image description here

使用您选择的十六进制编辑器,打开文件。这里我使用的是xvi32,因为它是一个轻量级的,没有多余的工具

enter image description here

那些空间很好,这意味着它实际上是一个unicode文件。

我的连接管理器看起来像

enter image description here

我的高级专栏页面是

enter image description here

重现我的包裹的Biml是微不足道的。安装BIDS Helper将新的biml文件添加到IS项目中。在调整第三行以指向您创建为unicode的文件后,将以下内容粘贴到其中。保存,右键单击并生成SSIS包

<Biml xmlns="http://schemas.varigence.com/biml.xsd">
    <Connections>
        <FlatFileConnection FilePath="C:\ssisdata\so_29439216.txt" FileFormat="FFF" Name="FF_CM" />
    </Connections>
    <FileFormats>
        <FlatFileFormat Name="FFF" IsUnicode="true" FlatFileType="Delimited">
            <Columns>
                <Column Name="SourceRow" DataType="String" Length="50" Delimiter="CRLF" InputLength="50" />
            </Columns>
        </FlatFileFormat>
    </FileFormats>
    <Packages>
        <Package ConstraintMode="Linear" Name="so_29439216">
            <Tasks>
                <Dataflow Name="DFT Source">
                    <Transformations>
                        <FlatFileSource ConnectionName="FF_CM" Name="FFS"></FlatFileSource>
                        <DerivedColumns Name="DFT Dataviewer anchor point"></DerivedColumns>
                    </Transformations>
                </Dataflow>
            </Tasks>
        </Package>
    </Packages>
</Biml>