Sqoop-export

提供:Dev Guides
移動先:案内検索

Sqoop-エクスポート

この章では、HDFSからRDBMSデータベースにデータをエクスポートする方法について説明します。 ターゲットテーブルは、ターゲットデータベースに存在する必要があります。 Sqoopへの入力として提供されるファイルには、テーブル内の行と呼ばれるレコードが含まれています。 これらは読み取られ、解析されて一連のレコードになり、ユーザー指定の区切り文字で区切られます。

デフォルトの操作では、INSERTステートメントを使用して、入力ファイルのすべてのレコードをデータベーステーブルに挿入します。 更新モードでは、Sqoopは既存のレコードをデータベースに置き換えるUPDATEステートメントを生成します。

構文

exportコマンドの構文は次のとおりです。

$ sqoop export (generic-args) (export-args)
$ sqoop-export (generic-args) (export-args)

HDFSのファイルにある従業員データの例を見てみましょう。 従業員データは、HDFSの「emp/」ディレクトリの emp_data ファイルで入手できます。 emp_data は次のとおりです。

1201, gopal,     manager, 50000, TP
1202, manisha,   preader, 50000, TP
1203, kalil,     php dev, 30000, AC
1204, prasanth,  php dev, 30000, AC
1205, kranthi,   admin,   20000, TP
1206, satish p,  grp des, 20000, GR

エクスポートするテーブルは手動で作成し、エクスポートする必要のあるデータベースに存在することが必須です。

次のクエリを使用して、mysqlコマンドラインでテーブル「従業員」を作成します。

$ mysql
mysql> USE db;
mysql> CREATE TABLE employee (
   id INT NOT NULL PRIMARY KEY,
   name VARCHAR(20),
   deg VARCHAR(20),
   salary INT,
   dept VARCHAR(10));

次のコマンドを使用して、テーブルデータ(HDFSの emp_data ファイル内)をMysqlデータベースサーバーのdbデータベースの従業員テーブルにエクスポートします。

$ sqoop export \
--connect jdbc:mysql://localhost/db \
--username root \
--table employee \
--export-dir/emp/emp_data

次のコマンドを使用して、mysqlコマンドラインのテーブルを確認します。

mysql>select * from employee;

指定されたデータが正常に保存された場合、指定された従業員データの次の表を見つけることができます。

+------+--------------+-------------+-------------------+--------+
| Id   | Name         | Designation | Salary            | Dept   |
+------+--------------+-------------+-------------------+--------+
| 1201 | gopal        | manager     | 50000             | TP     |
| 1202 | manisha      | preader     | 50000             | TP     |
| 1203 | kalil        | php dev     | 30000             | AC     |
| 1204 | prasanth     | php dev     | 30000             | AC     |
| 1205 | kranthi      | admin       | 20000             | TP     |
| 1206 | satish p     | grp des     | 20000             | GR     |
+------+--------------+-------------+-------------------+--------+