将postgresql数组导入hive

时间:2015-11-30 06:35:48

标签: postgresql hadoop hive sqoop

我一直在使用<ControlTemplate x:Key="TextBoxValidationToolTipTemplate"> <Grid x:Name="Root" Margin="5,0" Opacity="0" RenderTransformOrigin="0,0"> <Grid.RenderTransform> <TranslateTransform x:Name="xform" X="-25" /> </Grid.RenderTransform> <Border Background="StaticResource ValidationToolTipTemplateShadowBrush}" /> <Border Background="StaticResource ValidationToolTipTemplateShadowBrush}" /> <Border Background="StaticResource ValidationToolTipTemplateShadowBrush}" /> <Border Background="StaticResource ValidationToolTipTemplateShadowBrush}" /> <Border Background="StaticResource ValidationErrorElement}" /> <Border> <TextBlock Forground="{StaticResource LightBrush}" Text="{Binding (Validation.Errors).CurrentItem.ErrorContent}" UseLayoutRounding="false" /> </Border> </Grid> </ControlTemplate> Sqoop表和Postgresql之间移动数据。但显然Hive不支持Sqoop数组类型。

1 个答案:

答案 0 :(得分:0)

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             ,