我有多个 csv 文件和多个表。表名是文件名,列名是csv文件的第一行。
现在我想将空字符串的默认值添加到接收器表中。
考虑我的情况,
员工: id int,name varchar,is_active bit NULL
员工.csv:
id|name|is_active
1|拉贾|
现在我正在尝试将 csv 数据复制到 PostgreSQL 表中,它的抛出错误。如果其值为空,则预期结果为默认值。
我有多个 csv 文件和多个表。表名是文件名,列名是csv文件的第一行。
现在我想将空字符串的默认值添加到接收器表中。
考虑我的情况,
员工: id int,name varchar,is_active bit NULL
id|name|is_active
1|拉贾|
现在我正在尝试将 csv 数据复制到 PostgreSQL 表中,它的抛出错误。如果其值为空,则预期结果为默认值。
根据问题,尝试重现该场景,这是成功复制的以下结果。你必须使用
源数据集: employee.csv
来自 Azure Blob 存储
接收器数据集:在这里,我使用接收器作为 Azure SQL DB 有一些限制,但你使用的 PostgreSQL 几乎是相似的。
复制活动设置:
在mapping settings
下面会有类型转换,你必须在其中导入架构,否则你可以动态添加
输出:
替代使用DataFlow
- 如果您有多个数据字段,则需要使用派生列转换在数据流中生成新列或修改现有字段。
有关详细信息,请参阅映射数据流中的派生列转换。
您甚至可以参考这篇 Microsoft Q&A 帖子以获得更多见解:复制任务失败,因为转换失败
您可以在 PostgreSQL 中使用 NULLIF:
NULLIF(argument_1,argument_2);
argument_1
NULLIF 函数在等于 时返回空值argument_2
,否则返回argument_1
。
这样您就可以将 NULL 值替换为其他值
如果您的错误与类型不匹配有关,请考虑先对列进行类型转换
谢谢!