ステップ4。ターゲットテーブルにデータをコピーする¶
COPY INTO <テーブル> を実行して、ステージングされたデータをターゲットテーブルにロードします。
CSV¶
サンプル CSV ファイルからデータをロードするには、
ファイルの1つ(
contacts1.csv.gz
)からデータをロードすることから始めます。次を実行します。COPY INTO mycsvtable FROM @my_csv_stage/contacts1.csv.gz FILE_FORMAT = (FORMAT_NAME = mycsvformat) ON_ERROR = 'skip_file';
条件:
FROM
句は、ステージングされたデータファイルの場所を指定します(ステージ名の後にファイル名が続きます)。ON_ERROR
句は、 COPY コマンドでファイルにエラーが発生した場合の処理を指定します。デフォルトでは、コマンドは最初のエラーが発生するとデータのロードを停止します。ただし、エラーを含むファイルはスキップし、次のファイルのロードに進むように指示しています。これは単に説明を目的としたものです。このチュートリアルのファイルにはエラーが含まれていません。
COPY コマンドは、コピーされたファイルの名前と関連情報を示す結果を返します。
+-----------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+ | file | status | rows_parsed | rows_loaded | error_limit | errors_seen | first_error | first_error_line | first_error_character | first_error_column_name | |-----------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------| | mycsvtable/contacts1.csv.gz | LOADED | 5 | 5 | 1 | 0 | NULL | NULL | NULL | NULL | +-----------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+
ステージングされたファイルの残りを
mycsvtable
テーブルにロードします。次の例では、パターンマッチングを使用して、正規表現
.*contacts[1-5].csv.gz
に一致するすべてのファイルからデータをmycsvtable
テーブルにロードします。COPY INTO mycsvtable FROM @my_csv_stage FILE_FORMAT = (FORMAT_NAME = mycsvformat) PATTERN='.*contacts[1-5].csv.gz' ON_ERROR = 'skip_file';
ここで、
PATTERN
句は、コマンドがこの正規表現(.*employees0[1-5].csv.gz)
に一致するファイル名からデータをロードする必要があることを指定します。COPY コマンドは、コピーされたファイルの名前と関連情報を示す結果を返します。
+-----------------------------+-------------+-------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------+-----------------------+-------------------------+ | file | status | rows_parsed | rows_loaded | error_limit | errors_seen | first_error | first_error_line | first_error_character | first_error_column_name | |-----------------------------+-------------+-------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------+-----------------------+-------------------------| | mycsvtable/contacts2.csv.gz | LOADED | 5 | 5 | 1 | 0 | NULL | NULL | NULL | NULL | | mycsvtable/contacts3.csv.gz | LOAD_FAILED | 5 | 0 | 1 | 2 | Number of columns in file (11) does not match that of the corresponding table (10), use file format option error_on_column_count_mismatch=false to ignore this error | 3 | 1 | "MYCSVTABLE"[11] | | mycsvtable/contacts4.csv.gz | LOADED | 5 | 5 | 1 | 0 | NULL | NULL | NULL | NULL | | mycsvtable/contacts5.csv.gz | LOADED | 6 | 6 | 1 | 0 | NULL | NULL | NULL | NULL | +-----------------------------+-------------+-------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------+-----------------------+-------------------------+
結果の次のハイライトに注意してください。
contacts1.csv.gz
のデータは、既にデータを正常にロードしたため無視されます。これらのファイル
contacts2.csv.gz
、contacts5.csv.gz
、およびcontacts4.csv.gz
のデータは正常にロードされました、2つのデータエラーのため、
contacts3.csv.gz
のデータはスキップされました。このチュートリアルの次のステップでは、エラーを検証および修正する方法について説明します。
JSON¶
contacts.json.gz
ステージングデータファイルを myjsontable
テーブルにロードします。
COPY INTO myjsontable
FROM @my_json_stage/contacts.json.gz
FILE_FORMAT = (FORMAT_NAME = myjsonformat)
ON_ERROR = 'skip_file';
COPY コマンドは、コピーされたファイルの名前と関連情報を示す結果を返します。
+------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+
| file | status | rows_parsed | rows_loaded | error_limit | errors_seen | first_error | first_error_line | first_error_character | first_error_column_name |
|------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------|
| myjsontable/contacts.json.gz | LOADED | 3 | 3 | 1 | 0 | NULL | NULL | NULL | NULL |
+------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+