3단계. 데이터를 대상 테이블로 복사¶
Execute COPY INTO <테이블> to load staged data into the target tables.
CSV¶
To load the data from the sample CSV files:
Start by loading the data from one of the files in the
/tutorials/dataloading/
prefix (folder) namedcontacts1.csv
in themycsvtable
table. Execute the following:COPY INTO mycsvtable FROM @my_csv_stage/tutorials/dataloading/contacts1.csv ON_ERROR = 'skip_file';
여기서:
The
FROM
clause specifies the location of the staged data file (stage name followed by the file name).ON_ERROR = 'skip_file'
절은 COPY 명령 실행 시 파일에서 오류가 발생할 때 수행해야 하는 동작을 지정합니다. In this case, when the command encounters a data error on any of the records in a file, it skips the file. If you do not specify an ON_ERROR clause, the default isabort_statement
, which aborts the COPY command on the first error encountered on any of the records in a file.
The COPY command returns a result showing the name of the file copied and related information:
+---------------------------------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+ | 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
)과 일치하는 파일 이름에서 데이터를 로드하도록 지정합니다.The COPY command returns a result showing the name of the file copied and related information:
+---------------------------------------------------------+-------------+-------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------+-----------------------+-------------------------+ | 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
,contacts4.csv
,contacts5.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 |
+---------------------------------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+