このトピックでは、LOAD DATAステートメントを使用してオンプレミスデータをAnalyticDB for MySQL data Warehouse Edition (V3.0) にインポートする方法について説明します。
構文
ロードデータローカル
INFILE 'file_name'
[交換 | IGNORE]
INTO TABLE table_name
[{フィールド | コラム}
[「文字列」で終了]
[[最適] 'char' で囲まれた]
]
[ライン]
[「文字列」で終了]
]
[IGNORE number {LINES | ROWS}]
[(column_name_or_user_var
[, column_name_or_user_var] ...)
パラメーター
パラメーター | 説明 |
| オンプレミスファイルからデータをインポートします。 すべてのテキストファイルがサポートされています。 説明
|
| オンプレミスファイルのパス。 パスはディレクトリとファイル名で構成されます。 説明
|
| AnalyticDB for MySQLテーブルの名前。 |
| 重複主キーが使用されている場合にインポートするデータで既存のデータを上書きします。 |
| 重複主キーを使用するか、データエラーが発生した場合にインポートに失敗した行を無視します。 特定の行のインポートに失敗する場合があります。 |
| データの列を区切るために使用される区切り文字。 デフォルト値は |
| 各列のデータを囲むために使用される文字。 たとえば、列のデータが |
| データの行を区切るために使用される区切り文字。 デフォルト値は |
| データをインポートするときに無視する行数。 たとえば、 |
| インポートする列。 このパラメーターを指定しない場合、データは列の順序に基づいてインポートされます。
|
使用上の注意
クライアントの
local-infile
機能を有効にする必要があります。たとえば、次の設定を
my.cn f
ファイルに追加して、MySQLクライアントのlocal-infile
機能を有効にする必要があります。cat ~/.my.cn f [mysqld] local-infile [mysql] local-infile
my.cn f
ファイルの詳細については、「MySQL公式ドキュメント」をご参照ください。データのインポートは、操作の原子性を保証できません。
IGNORE
モードでは、インポートに失敗したデータの行は無視されます。REPLACE
モードでは、データの行のインポートに失敗した場合、後続のINSERT
操作は終了します。 その結果、特定の行のデータがインポートされない場合があります。
SHOW WARNINGS
ステートメントを実行して、失敗した行のエラーメッセージを照会できます。
例:
この例では、out.bak
という名前のオンプレミスファイルのデータが、test
という名前のAnalyticDB for MySQLテーブルにインポートされます。 out.bak
ファイルには、5,000行のデータが含まれます。 列の区切り文字は \t
、行の区切り文字は \n
です。 次のデータエントリに示すように、8行目のデータが無効です。
1 bb
2 bb
3 bb
4 bb
5 bb
6 bb
7 bb
bb 8
9 bb
...
管理するAnalyticDB for MySQLクラスターに接続します。 CREATE DATABASEおよびCREATE TABLEステートメントを実行して、
adb_demo
という名前のデータベースにtest
という名前のテーブルを作成し、オンプレミスファイルからインポートするデータを格納します。CREATE TABLEテスト ( int NOT NULL DEFAULT '0' 、b varchar NOT NULL, 主要なキー (a) ) HASHによる分布 (a);
MySQLクライアントでLOAD DATAステートメントを実行して、
out.bak
という名前のオンプレミスファイルからtest
という名前のAnalyticDB for MySQLテーブルにデータをインポートします。LOAD DATAステートメントを
IGNORE
モードで実行します。 このモードでは、特定の行のインポートに失敗する可能性があります。 例:LOAD DATA LOCAL INFILE '~/out.bak' IGNORE INTO TABLEテストフィールドは' \'によって終了しました。'\n ' ;
次のステートメントを実行して、インポート結果を照会します。
選択カウント (1) テストから;
--------- + | count(1) | + --------- | 4999 | + --------- 1行セット (0.14秒)
LOAD DATAステートメントを
REPLACE
モードで実行します。 このモードでは、行のインポートに失敗した場合、後続のインポート操作は直ちに終了します。 例:LOAD DATA LOCAL INFILE '~/out.bak' は、' \'によって終了するテーブルテストフィールドに置き換えられます。'\n' ;
サンプル結果:
エラー1064 (42000): [13000、2019061210070703000511314203303000266] 構文エラー: syntax ERROR=> IDENTIFIER is not value type pos:34 row: 0 and ceil:0
データをインポートするときに、データの最初の10行をスキップするには、LOAD DATAステートメントを実行します。 例:
LOAD DATA LOCAL INFILE '~/out.bak' REPLACE INTO TABLE test FIELDS TERMINATED BY'\t' LINES TERMINATED BY '\n' IGNORE 10 LINES;
サンプル結果:
クエリOK、影響を受ける4990行 (0.37秒)