首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在目标数据库中指定sqoop导出列?

如何在目标数据库中指定sqoop导出列?
EN

Stack Overflow用户
提问于 2015-03-13 20:58:01
回答 1查看 424关注 0票数 2

我想使用sqoop (2) export从avro文件填充postgres表,但我在源文件中没有id字段,应该自动填充(序列类型),但我得到了一个错误。

表DDL:

代码语言:javascript
复制
CREATE TABLE test
 (
 id serial primary key,
 partner_id varchar,
 column1 varchar,
 column2 varchar
)

avro模式:

代码语言:javascript
复制
{
"namespace": "avro_test",
"type": "record",
"name": "test",
"fields": [
      {"name": "partner_id", "type": "string"},
      {"name": "column1", "type": ["string","null"]},
      {"name": "column2", "type": ["string","null"]}
      ]
}

我使用的导出命令:

代码语言:javascript
复制
./sqoop-1.4.5.bin__hadoop-2.0.4-alpha/bin/sqoop export \
    --connect jdbc:postgresql://host/db \
    --username user_test --password pass_test \
    --table test \
    --export-dir path \
    --columns partner_id,column1,column2

但是我得到了一个错误,我在avro模式中没有id:

代码语言:javascript
复制
Status : FAILED
Error: java.io.IOException: Cannot find field id in Avro schema

我尝试使用--column参数指定目标列,但它不起作用。如何加载上述avro文件?

如果我从表中删除id字段,它会成功导出

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2018-08-06 03:32:54

简单的解决方案是在avro模式中添加id,默认情况下将为空

代码语言:javascript
复制
{
  "namespace": "avro_test",
  "type": "record",
  "name": "test",
  "fields": [
        {"name": "id", "type": ["null", "int"]},
        {"name": "partner_id", "type": "string"},
        {"name": "column1", "type": ["string","null"]},
        {"name": "column2", "type": ["string","null"]}
  ]

}

通过Sqoop导出到mysql时,会自动填充主键Id。希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29032873

复制
相关文章

相似问题

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