【发布时间】:2022-06-10 20:33:31
【问题描述】:
我们正在尝试将 parquet 文件从 blob 复制到 Postgres 表。现在的问题是我的源拼花地板有一些带有数字数组的列,ADF 抱怨不支持这些列,如果我将其更改为字符串数据类型,我的 Postgres 说它期待数字数组
是否有一些解决方案或解决方法来解决这个问题?
【问题讨论】:
标签: azure azure-data-factory azure-data-factory-2
我们正在尝试将 parquet 文件从 blob 复制到 Postgres 表。现在的问题是我的源拼花地板有一些带有数字数组的列,ADF 抱怨不支持这些列,如果我将其更改为字符串数据类型,我的 Postgres 说它期待数字数组
是否有一些解决方案或解决方法来解决这个问题?
【问题讨论】:
标签: azure azure-data-factory azure-data-factory-2
解决该问题的方法是将这些列的类型从数组类型更改为 Postgres 表中的字符串。这可以使用以下代码完成:
ALTER TABLE <table_name> ALTER COLUMN <column_name> TYPE text;
我获取了一个示例表 player,其中包含 2 个数组列 position(整数数组)和 role(文本数组)。
更改这些列的类型后,表格如下所示。
ALTER TABLE player1 ALTER COLUMN position TYPE varchar(40);
ALTER TABLE player1 ALTER COLUMN role TYPE varchar(40);
您现在可以在 ADF 中完成复制活动而不会出现任何错误。
如果有任何现有记录,特定的数组类型值将转换为字符串类型,它还可以帮助您完成复制活动而不会出现任何错误。下面是这种情况的一个例子。
注意:
{} 而不是 [] 中,那么您可以将列类型转换回使用ALTER查询的数组类型。[] 中,并且您尝试将表中的列转换回数组类型,则会引发以下错误。 ERROR: malformed array literal: "[1,1,0]"
DETAIL: Missing "]" after array dimensions.
【讨论】: