Etapa 4. Copiar dados para as tabelas de destino¶
Execute COPY INTO <tabela> para carregar dados preparados nas tabelas de destino.
CSV¶
Para carregar os dados dos arquivos CSV de amostra:
Comece carregando os dados de um dos arquivos (
contacts1.csv.gz
). Execute o seguinte:COPY INTO mycsvtable FROM @my_csv_stage/contacts1.csv.gz FILE_FORMAT = (FORMAT_NAME = mycsvformat) ON_ERROR = 'skip_file';
Onde:
A cláusula
FROM
especifica a localização do arquivo de dados preparado (nome do estágio seguido do nome do arquivo).A cláusula
ON_ERROR
especifica o que fazer quando o comando COPY encontra erros nos arquivos. Por padrão, o comando interrompe o carregamento de dados quando o primeiro erro é encontrado. No entanto, demos uma instrução para que ele pule qualquer arquivo que contenha erro e prossiga para carregar o próximo arquivo. Lembre-se que isso é apenas um exemplo. Nenhum arquivo deste tutorial contém erros.
O comando COPY retorna um resultado mostrando o nome do arquivo copiado e informações relacionadas:
+-----------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+ | 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 | +-----------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+
Carregue o resto dos arquivos preparados na tabela
mycsvtable
.O exemplo a seguir usa a correspondência de padrões para carregar dados de todos os arquivos que correspondem à expressão regular
.*contacts[1-5].csv.gz
para a tabelamycsvtable
.COPY INTO mycsvtable FROM @my_csv_stage FILE_FORMAT = (FORMAT_NAME = mycsvformat) PATTERN='.*contacts[1-5].csv.gz' ON_ERROR = 'skip_file';
Em que a cláusula
PATTERN
especifica que o comando deve carregar dados dos nomes dos arquivos que correspondem a esta expressão regular(.*employees0[1-5].csv.gz)
.O comando COPY retorna um resultado mostrando o nome do arquivo copiado e informações relacionadas:
+-----------------------------+-------------+-------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------+-----------------------+-------------------------+ | 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 | +-----------------------------+-------------+-------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------+-----------------------+-------------------------+
Observe os seguintes destaques no resultado:
Os dados em
contacts1.csv.gz
são ignorados porque você já carregou os dados com sucesso.Os dados contidos nestes arquivos foram carregados com sucesso:
contacts2.csv.gz
,contacts4.csv.gz
econtacts5.csv.gz
.Os dados em
contacts3.csv.gz
foram ignorados devido a 2 erros de dados. A próxima etapa neste tutorial trata de como validar e corrigir os erros.
JSON¶
Carregue o arquivo de dados preparado contacts.json.gz
na tabela myjsontable
.
COPY INTO myjsontable
FROM @my_json_stage/contacts.json.gz
FILE_FORMAT = (FORMAT_NAME = myjsonformat)
ON_ERROR = 'skip_file';
O comando COPY retorna um resultado mostrando o nome do arquivo copiado e informações relacionadas:
+------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+
| 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 |
+------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+