Sqoop导出列

时间:2015-01-10 09:06:27

标签: sql-server sqoop

我们是否只需按HDFS列的顺序提供SQL列名称?

示例: 我们按以下格式更新SQL表:

sqoop export 
--connect "jdbc:sqlserver://blah;database=blahblah" 
--username="user" --password="pass" 
--driver "com.microsoft.sqlserver.jdbc.SQLServerDriver" 
--table "blahblhablha" --export-dir "/blah"
--columns "id,name,age" --update-key "id"

我的SQL表的格式为:

+--+---+----+
|id|age|name|
+--+---+----+

当我执行上面的sqoop命令时,它运行良好,但冻结率为100%,从未完成作业。
列是否必须按顺序排列?(我不这么认为) 当我按照相同的顺序--columns "id,age,name"时,它运行正常 我在这里找不到什么东西?

提前致谢

1 个答案:

答案 0 :(得分:0)

这取决于HDFS中数据的顺序。让我们使用以下CSV数据作为示例:

1,55,"John Smith"
2,22,"Jason Jonas"
...

如果--columns参数设置为id,name,age,则Sqoop将创建采用INSERT INTO blahblahblah (id, name, age) VALUES (1, 55, "John Smith")形式的插入语句。这应该不起作用,因为"John Smith"显然不是整数。所以,这里的订单很重要。

有关详细信息,请参阅docs;有关更多帮助,请参阅user@sqoop.apache.org邮件列表。