InfiniDBでは、あるテーブルのSELECT結果を別テーブルへバルク挿入(データロード)することが可能です。
用途
・中間テーブルや集計テーブルを作成する場合・テーブルを再構築したい場合
構文
下記構文の「SELECT文」内に元テーブルを指定し、「テーブル名」に別テーブルを指定します。
1 |
# idbmysql -e 'SELECT文' -N データベース名 | cpimport データベース名 テーブル名 -s '\t' -n 1 |
cpimportのオプションの詳細は「InfiniDB管理者ガイド」をご参照ください。
※InfiniDBの日本語マニュアルは「ダウンロード」記事でご確認いただけます。
http://infinidb-tech.ashisuto.co.jp/category/technical-info/download/
idbmysqlのオプション詳細は、以下のページに記載されています。
MySQLコマンドラインツールのオプション(マニュアル)
http://dev.mysql.com/doc/refman/5.1/ja/mysql-command-options.html
例)t1テーブルの全データをt2テーブルへバルク挿入する場合
t1テーブルに格納されている全データを、新規作成するt2テーブルへバルク挿入する例を紹介します。1. CREATE TABLE文で空のt2テーブルを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
mysql> CREATE TABLE t2 (hanbai_date date,hinmei varchar(100)) ENGINE=InfiniDB; Query OK, 0 rows affected (0.23 sec) mysql> SHOW CREATE TABLE t2; +-------+------------------------------------------------------+ | Table | Create Table | +-------+------------------------------------------------------+ | t2 | CREATE TABLE `t2` ( `hanbai_date` date DEFAULT NULL, `hinmei` varchar(100) DEFAULT NULL ) ENGINE=InfiniDB DEFAULT CHARSET=utf8 | +-------+------------------------------------------------------+ 1 row in set (0.00 sec) mysql> exit Bye |
※各列のデータ型やサイズはt1テーブルと同一にします。
2. SELECTを組み合わせてcpimportを実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# idbmysql -e 'SELECT * FROM t1;' -N testdb | cpimport testdb t2 -s '\t' -n 1 Locale is : ja_JP.UTF-8 Column delimiter : \t Using table OID 3087 as the default JOB ID Input file(s) will be read from : STDIN Job description file : /usr/local/Calpont/data/bulk/tmpjob/testdb_t2_D20140711_T194114_Job_3087.xml Log file for this job: /usr/local/Calpont/data/bulk/log/Job_3087.log 2014-07-11 19:41:14 (18773) INFO : successfully loaded job file /usr/local/Calpont/data/bulk/tmpjob/testdb_t2_D20140711_T194114_Job_3087.xml 2014-07-11 19:41:14 (18773) INFO : Job file loaded, run time for this step : 1.07303 seconds 2014-07-11 19:41:14 (18773) INFO : PreProcessing check starts 2014-07-11 19:41:14 (18773) INFO : PreProcessing check completed 2014-07-11 19:41:14 (18773) INFO : preProcess completed, run time for this step : 0.0183141 seconds 2014-07-11 19:41:14 (18773) INFO : No of Read Threads Spawned = 1 2014-07-11 19:41:14 (18773) INFO : Reading input from STDIN to import into table testdb.t2... 2014-07-11 19:41:14 (18773) INFO : No of Parse Threads Spawned = 3 2014-07-11 19:41:14 (18773) INFO : For table testdb.t2: 2 rows processed and 2 rows inserted. 2014-07-11 19:41:15 (18773) INFO : Bulk load completed, total run time : 2.09493 seconds |
3. t1テーブルとt2テーブルのデータを確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
mysql> select * from t1; +-------------+-----------+ | hanbai_date | hinmei | +-------------+-----------+ | 2013-12-20 | りんご | | 9999-12-31 | NULL | +-------------+-----------+ 2 rows in set (0.07 sec) mysql> select * from t2; +-------------+-----------+ | hanbai_date | hinmei | +-------------+-----------+ | 2013-12-20 | りんご | | 9999-12-31 | NULL | +-------------+-----------+ 2 rows in set (0.04 sec) |