首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用包含空值或逗号的列导入CSV文件时出现的问题

使用包含空值或逗号的列导入CSV文件时出现的问题
EN

Stack Overflow用户
提问于 2020-06-03 20:10:26
回答 1查看 632关注 0票数 1

我有一个CSV文件,其中有两列:

代码语言:javascript
复制
Employee_Name,EmpID
"Harry, Watson",1
"Amy, Black",2
"O'hare, Lynn",3
Jeremy Prater,4
,,
,,

我使用biml生成包:

代码语言:javascript
复制
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<FileFormats>
        <FlatFileFormat Name="FlatFile" CodePage="1252" TextQualifer="&quot;"
        ColumnNamesInFirstDataRow="true" IsUnicode="false">            
            <Columns>
                <Column Name="Employee_Name" DataType="AnsiString"  Length="255" Delimiter="Comma" />
                <Column Name="EmpID" DataType="Int64" Delimiter="Comma" />


            </Columns>
        </FlatFileFormat>
</FileFormats>

<Connections>
    <FlatFileConnection Name="importexcel"
        FilePath="HR.csv"
        FileFormat="FlatFile" />
    <Connection Name="AppSTG" 
        ConnectionString="XXXX"></Connection>
</Connections>


<Databases>

    <Database Name="STG_App" ConnectionName="AppSTG"></Database>

</Databases>


<Schemas>
    <Schema Name="HR" DatabaseName="STG_App"></Schema>
</Schemas>    

<Tables>
    <Table Name="Employee" SchemaName="STG_App.HR">
            <Columns>
               <Column Name="Employee_Name" DataType="AnsiString" Length="255" />
                <Column Name="EmpID" DataType="Int64"  />
        </Columns>
        </Table>

</Tables>    
<Packages>
        <Package Name="Load Flat File Data" >
            <Tasks>
                <Dataflow Name="Load Flat File Data">
                    <Transformations>
                        <FlatFileSource ConnectionName="importexcel" Name="FlatFile"/>
                        <OleDbDestination Name="Target" ConnectionName="AppSTG">
                            <TableOutput TableName="STG_App.HR.Employee" />
                        </OleDbDestination>
                    </Transformations>
                </Dataflow>
            </Tasks>
        </Package>
    </Packages>




</Biml>

若要创建以下数据流:

当我尝试执行这个包时,我有以下错误:

数据转换失败。列"EmpID“的数据转换返回状态值2和状态文本”由于数据可能丢失而无法转换值“。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-03 21:15:44

您已经将您的EmpID字段定义为Int64,如果您有一个数字,但是如果没有数据(但仍有一行),SSIS将尝试将空字符串转换为一个数字,这将失败。

如果从平面文件源添加了一个用于截断/错误/etc的错误路径,则会看到5+行沿着该路径前进。对于这些数据,我会将所有内容定义为string,因为您需要将数据放入管道中,然后您将需要根据任何有意义的业务规则(没有名称/id,丢弃它)对其采取行动。

正如@alex在注释中指出的那样,最后的行表示有三列数据,而您已经定义了两列,所以当平面文件源达到这个值时,您就会崩溃。SSIS将无法处理不一致的文件格式。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62181896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档