【问题标题】:How to copy Numeric Array from parquet to postgres using Azure data factory如何使用 Azure 数据工厂将数字数组从 parquet 复制到 postgres
【发布时间】:2022-06-10 20:33:31
【问题描述】:

我们正在尝试将 parquet 文件从 blob 复制到 Postgres 表。现在的问题是我的源拼花地板有一些带有数字数组的列,ADF 抱怨不支持这些列,如果我将其更改为字符串数据类型,我的 Postgres 说它期待数字数组

是否有一些解决方案或解决方法来解决这个问题?

【问题讨论】:

    标签: azure azure-data-factory azure-data-factory-2


    【解决方案1】:

    解决该问题的方法是将这些列的类型从数组类型更改为 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.
    

    【讨论】:

      猜你喜欢
      • 2022-01-18
      • 2017-03-06
      • 2018-08-01
      • 2021-09-02
      • 2023-03-27
      • 2021-07-03
      • 1970-01-01
      • 2021-05-01
      • 2019-11-19
      相关资源
      最近更新 更多