ステップ3。データをターゲットテーブルにコピーする¶
COPY INTO <テーブル> を実行して、ステージングされたデータをターゲットテーブルにロードします。
CSV¶
サンプル CSV ファイルからデータをロードするには、
mycsvtable
テーブルのcontacts1.csv
という名前の/tutorials/dataloading/
プレフィックス(フォルダー)内にあるファイルの1つからデータをロードすることから始めます。次を実行します。COPY INTO mycsvtable FROM @my_csv_stage/tutorials/dataloading/contacts1.csv ON_ERROR = 'skip_file';
条件:
FROM
句は、ステージングされたデータファイルの場所を指定します(ステージ名の後にファイル名が続きます)。ON_ERROR = 'skip_file'
句は、 COPY コマンドでファイルにエラーが発生した場合の処理を指定します。この場合、コマンドは、ファイル内のいずれかの記録でデータエラーが発生すると、ファイルをスキップします。ON_ERROR 句を指定しない場合、デフォルトはabort_statement
であり、ファイル内の記録において最初に発生したエラーで COPY コマンドを中止します。
COPY コマンドは、コピーされたファイルの名前と関連情報を示す結果を返します。
+---------------------------------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+ | file | status | rows_parsed | rows_loaded | error_limit | errors_seen | first_error | first_error_line | first_error_character | first_error_column_name | |---------------------------------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------| | s3://snowflake-docs/tutorials/dataloading/contacts1.csv | LOADED | 5 | 5 | 1 | 0 | NULL | NULL | NULL | NULL | +---------------------------------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+
ステージングされたファイルの残りを
mycsvtable
テーブルにロードします。次の例では、パターンマッチングを使用して、正規表現
.*contacts[1-5].csv
に一致するファイルからデータをmycsvtable
テーブルにロードします。COPY INTO mycsvtable FROM @my_csv_stage/tutorials/dataloading/ PATTERN='.*contacts[1-5].csv' ON_ERROR = 'skip_file';
ここで、
PATTERN
句は、コマンドがこの正規表現.*contacts[1-5].csv
に一致するファイル名からデータをロードする必要があることを指定します。COPY コマンドは、コピーされたファイルの名前と関連情報を示す結果を返します。
+---------------------------------------------------------+-------------+-------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------+-----------------------+-------------------------+ | file | status | rows_parsed | rows_loaded | error_limit | errors_seen | first_error | first_error_line | first_error_character | first_error_column_name | |---------------------------------------------------------+-------------+-------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------+-----------------------+-------------------------| | s3://snowflake-docs/tutorials/dataloading/contacts2.csv | LOADED | 5 | 5 | 1 | 0 | NULL | NULL | NULL | NULL | | s3://snowflake-docs/tutorials/dataloading/contacts3.csv | 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] | | s3://snowflake-docs/tutorials/dataloading/contacts4.csv | LOADED | 5 | 5 | 1 | 0 | NULL | NULL | NULL | NULL | | s3://snowflake-docs/tutorials/dataloading/contacts5.csv | LOADED | 6 | 6 | 1 | 0 | NULL | NULL | NULL | NULL | +---------------------------------------------------------+-------------+-------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------+-----------------------+-------------------------+
結果の次のハイライトに注意してください。
contacts1.csv
のデータは、既にデータを正常にロードしたため無視されます。これらのファイル
contacts2.csv
、contacts5.csv
、およびcontacts4.csv
のデータは正常にロードされました、2つのデータエラーのため、
contacts3.csv
のデータはスキップされました。このチュートリアルの次のステップでは、エラーを検証および修正する方法について説明します。
JSON¶
contacts.json
ステージングデータファイルを myjsontable
テーブルにロードします。
COPY INTO myjsontable FROM @my_json_stage/tutorials/dataloading/contacts.json 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 |
|---------------------------------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------|
| s3://snowflake-docs/tutorials/dataloading/contacts.json | LOADED | 3 | 3 | 1 | 0 | NULL | NULL | NULL | NULL |
+---------------------------------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+