gpt4 book ai didi

csv - 平面文件目标列数据类型验证

转载 作者:行者123 更新时间:2023-12-04 15:47:46 24 4
gpt4 key购买 nike

通过 OLE DB 源读取 INT 类型的源数据库字段。它最终被写入平面文件目标。目标平面文件连接管理器 > 高级页面将其报告为 四字节有符号整数 [DT_I4]

这种数据类型让我觉得它表示二进制。显然,事实并非如此。我很惊讶它不是更通用的 numeric [DT_NUMERIC]

我将此类型设置更改为 单字节有符号整数 [DT_I1]。我预计这会失败,但事实并非如此。该过程产生相同的结果,即使该字段的值始终 > 127。为什么这没有失败?

产生的一些值是

1679576722
1588667638
1588667638
1497758544
1306849450
1215930367
1215930367
1023011178
1932102084

显然,超出了单字节有符号整数 [DT_I1] 的范围。

作为一个相关问题,是否可以将二进制数据输出到平面文件?如果是这样,应该使用什么设置以及在哪里使用?

最佳答案

数据类型验证

我认为这个问题与使用的连接管理器有关,因为数据类型验证(管道外)不是由集成服务完成的,而是由服务提供商完成的:

  • 用于 Excel 和 Access 的 OLEDB
  • SQL Server 的 SQL 数据库引擎
  • ...

对于平面文件连接管理器,它不保证任何数据类型的一致性,因为所有值都存储为文本。例如尝试添加一个平面文件连接管理器并选择一个包含名称的文本文件,尝试将列数据类型更改为日期并转到列预览选项卡,它将毫无问题地显示所有列。它只处理行分隔符、列分隔符、文本限定符和用于从平面文件读取的常用属性。 (类似于 VB.NET 中的 TextFieldParser 类)

数据类型可能导致异常的唯一情况是当您使用平面文件源时,因为平面文件源将创建一个外部列,其中包含平面文件连接管理器中定义的元数据和链接当 SSIS 尝试从平面文件源读取时,外部列将抛出异常

二进制输出

您应该在包中将列转换为二进制并将其映射到目标列。例如,您可以使用脚本组件来执行此操作:

public override void myInput_ProcessInputRow(myInputBuffer Row)
{

Row.ByteValues=System.Text.Encoding.UTF8.GetBytes (Row.name);

}

我还没有尝试过这是否适用于派生列或数据转换转换。

引用资料

关于csv - 平面文件目标列数据类型验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54951462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com