0

我在文件夹中有多个 csv 文件,如employee.csv、student.csv 等,.. 带有标题而且我还有所有文件的表格(标题和表格列名都相同)。

员工.csv

id|name|is_active

1|拉贾|1

2|阿伦|0

学生.csv

身份证|姓名

1|拉贾

2|阿伦

表结构:

员工:

id INT,名称 VARCHAR,is_active BIT

学生:

id INT,名称 VARCHAR

现在我正在尝试使用 foreach 活动对所有文件进行复制活动,成功复制了学生表,但是在读取employee.csv 文件时,员工表未复制其抛出错误。

错误信息:

{"Code":27001,"Message":"ErrorCode=TypeConversionInvalidHexLength,将列名 'is_active' 的值 '0' 从类型 'String' (precision:, scale:) 转换为类型 'ByteArray' (precision: 0,比例:0)。附加信息:“,EventType”:0,“Category”:5,“Data”:{},“MsgId”:null,“ExceptionType”:“Microsoft.DataTransfer.Common.Shared。 PluginRuntimeException","Source":null,"StackTrace":"","InnerEventInfos":[]}

4

1 回答 1

0

使用数据流活动。

在数据流活动中,选择源。

在此之后选择派生列并将 is_active 列的数据类型从 BIT 更改为 String。

如下图所示,Salary 列具有字符串数据类型。所以我把它改成了整数。 在此处输入图像描述

要修改数据类型,请使用表达式生成器。您可以使用toString() 在此处输入图像描述

在此处输入图像描述

这样,您可以在接收器活动之前更改数据类型。

在最后一步中,将 Sink 提供为 postgresql 并运行管道。

于 2021-09-24T05:56:11.913 回答