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」です。

バージョンはSqoop1.3.0-cdh3u3です

4

3 に答える 3

3

Sqoop 1.4.1では、自動インクリメントフィールドに対応するテキストファイルフィールドの位置に「null」を書き込むことができました。mySQLにエクスポートすると、増分されて自動的に割り当てられたIDが表示されます。

于 2012-07-09T14:10:52.073 に答える
0

Sqoopメーリングリストの誰かが提案したように:

  • IDなしで一時テーブルを作成します
  • Sqoop-このテーブルにエクスポート
  • このテーブルの行を最終テーブル(自動インクリメント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 に答える