首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Azure数据工厂将数字数组从地板复制到postgres

如何使用Azure数据工厂将数字数组从地板复制到postgres
EN

Stack Overflow用户
提问于 2022-06-10 08:40:18
回答 1查看 86关注 0票数 0

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

有什么解决办法或解决办法来解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2022-06-10 12:33:31

解决此问题的方法是将这些列的类型从数组类型更改为Postgres表中的字符串。这可以使用以下代码来完成:

代码语言:javascript
复制
ALTER TABLE <table_name> ALTER COLUMN <column_name> TYPE text; 

我使用了一个示例表player,它由两个数组列position (整数数组)和role (文本数组)组成。

更改这些列的类型后,表如下所示。

代码语言:javascript
复制
ALTER TABLE player1 ALTER COLUMN position TYPE varchar(40);

ALTER TABLE player1 ALTER COLUMN role TYPE varchar(40);

现在可以在ADF中完成复制活动,而不会出现任何错误。

如果存在任何现有记录,则特定的数组类型值将转换为字符串类型,并且它还可以帮助您完成复制活动,而不会出现任何错误。下面是这种情况的一个例子。

初始表数据(数组类型列):https://i.stack.imgur.com/O6ErV.png

注:

  • 考虑到您在源文件中将数组列更改为string类型,如果您可以进行更改,使值列表包含在{}中而不是[]中,则可以使用ALTER Query.
  • 将列类型转换回数组类型。如果元素列表包含在[]中,并且试图将列转换回表中的数组类型,则会引发以下错误。

F 229

代码语言:javascript
复制
    ERROR:  malformed array literal: "[1,1,0]"
    DETAIL:  Missing "]" after array dimensions.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72571412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档