将 postgresql 数组导入配置单元

Posted

技术标签:

【中文标题】将 postgresql 数组导入配置单元【英文标题】:Importing postgresql arrays to hive 【发布时间】:2015-11-30 06:35:47 【问题描述】:

我一直在使用SqoopPostgresql 表和Hive 之间移动数据。但显然Sqoop 不支持Postgresql 数组类型。

【问题讨论】:

【参考方案1】:

Postgresql 有一个名为array_to_string 的函数。您可以利用它将数组转换为字符串。

为了说明,这里是postgresql中的表格:

=# select * from albums;
  id  | album_id  | names 
-----------+-------+-----
 123  | 1,2,3,4 | test
(1 row)
=# 

如您所见,album_id 具有数组类型,更具体地说是整数数组。

现在,要从名为 mydb 的数据库中导入它,我使用以下命令:

sqoop import --connect jdbc:postgresql://localhost:5432/mydb \
--query "select id, array_to_string(album_id,',','*'), names \
         from albums where \$CONDITIONS" \
--split-by id \
--target-dir albums

之后,您可以使用以下参数创建一个外部 Hive 表:

collection.delim        $                   
field.delim             ,  

【讨论】:

请提供示例。我正在使用 array_to_string(ARRAY[album_id],',') 在 hive 表中显示空值。请帮助我。

以上是关于将 postgresql 数组导入配置单元的主要内容,如果未能解决你的问题,请参考以下文章

postlt怎么导入

从 MySql 转储导入到配置单元

如何创建一个结构连接行作为嵌套文档 PostgreSQL

如何将文件从windows os复制到cloudera?我还想将 .csv 文件导入配置单元,我该怎么做?

使用 PostgreSQL 数组进行列表推导

vba 怎么将单元格区域赋值给数组