ステップ5。ターゲットテーブルにデータをコピーする

COPY INTO <テーブル> を実行して、ステージングされたデータをターゲットテーブルにロードします。

次の例には、 ON_ERROR = 'skip_file' パラメーター値が含まれています。コマンドのいずれかのレコードでデータエラーが発生した場合、ファイルはスキップされます。 ON_ERROR 値を指定しない場合、デフォルトは ON_ERROR = 'abort_statement' であり、ファイル内のレコードで最初に発生したエラーで COPY コマンドを中止します。

注釈

データをテーブルにロードするには、ウェアハウスが必要です。前提条件の指示に従ってウェアハウスを作成した場合は、次のセクションに移動します。自動再開が構成されていないウェアハウスを使用している場合は、 ALTER WAREHOUSE を実行してウェアハウスを再開します。ウェアハウスの起動には最大5分かかることがあります。

ALTER WAREHOUSE mywarehouse RESUME;

CSV

次の例では、 contacts1.csv.gz という名前のファイルから mycsvtable テーブルにデータをロードします。

COPY INTO mycsvtable
  FROM @my_csv_stage/contacts1.csv.gz
  FILE_FORMAT = (FORMAT_NAME = mycsvformat)
  ON_ERROR = 'skip_file';

Snowflakeは、 contacts1.csv.gz のデータが正常にロードされたことを示す次の結果を返します。

+-----------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+
| 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 |
+-----------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+

次の例では、パターンマッチングを使用して、正規表現 .*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';

Snowflakeは次の結果を返します。

  • contacts1.csv.gz のデータは、既にデータを正常にロードしたため無視されます。

  • 次のファイルのデータは正常にロードされました。

    • contacts2.csv.gz

    • contacts4.csv.gz

    • contacts5.csv.gz

  • 2つのデータエラーのため、 contacts3.csv.gz のデータはスキップされました。このチュートリアルの次のステップでは、エラーを検証および修正する方法について説明します。

+-----------------------------+-------------+-------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------+-----------------------+-------------------------+
| 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                    |
+-----------------------------+-------------+-------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------+-----------------------+-------------------------+

JSON

次の例では、 contacts.json.gz という名前のファイルから myjsontable テーブルにデータをロードします。

COPY INTO myjsontable
  FROM @my_json_stage/contacts.json.gz
  FILE_FORMAT = (FORMAT_NAME = myjsonformat)
  ON_ERROR = 'skip_file';

Snowflakeは、 contacts1.csv.gz のデータが正常にロードされたことを示す次の結果を返します。

+------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+
| 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 |
+------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+

次: ステップ6。データの問題に関連するデータロードエラーを解決する