5

我在 HDFS 中有一个制表符分隔的文本文件,并希望将其导出到 MySQL 表中。

由于文本文件中的行没有数字 ID,我如何导出到在 SQL INSERT(自动增量)期间自动设置 ID 的表中?

如果我尝试导出(id 是表中最后定义的属性),我得到

java.util.NoSuchElementException
  at java.util.AbstractList$Itr.next(AbstractList.java:350)
  at entity.__loadFromFields(entity.java:996)

如果我采用自动生成的类并对其进行修改以排除 id 属性,我会得到

java.io.IOException: java.sql.SQLException: No value specified for parameter 27

其中参数 27 是“id”。

版本是 Sqoop 1.3.0-cdh3u3

4

3 回答 3

3

In Sqoop 1.4.1, writing a "null" in the text file field position corresponding to the autoincrement field worked for me. After exported to mySQL you will see an incremented and automatically asigned ID.

于 2012-07-09T14:10:52.073 回答
0

As somebody on the Sqoop mailinglist suggested:

  • Create a temporary table without the ID
  • Sqoop-export into this table
  • Copy the rows of this table into the final table (that has the autoincrement ID)
于 2012-04-16T06:15:53.317 回答
0

我的源表在 HIVE 中。对我有用的是我添加了一个名为 id int 的列,并将该列填充为 NULL。在 sqoop 之后,mysql 将接收插入 (id, X, Y) 值 (null, "x_value, "y_value")。然后 mysql 知道将 id 填充为自动增量。

于 2014-08-12T17:50:56.343 回答