CSV ファイルのアンロード
このページでは、COPY INTO コマンドを使用して CSV ファイルをアンロード (unload) する方法について説明します。
構文
COPY INTO { internalStage | externalStage | externalLocation }
FROM { [<database_name>.]<table_name> | ( <query> ) }
FILE_FORMAT = (
TYPE = CSV,
RECORD_DELIMITER = '<character>',
FIELD_DELIMITER = '<character>',
COMPRESSION = gzip,
OUTPUT_HEADER = true -- Unload with header
)
[MAX_FILE_SIZE = <num>]
[DETAILED_OUTPUT = true | false]
- CSV のその他のオプションについては、CSV ファイル形式オプション を参照してください
- 複数ファイルへのアンロードについては、MAX_FILE_SIZE コピーオプション を使用します
- 構文の詳細については、COPY INTO location を参照してください
チュートリアル
ステップ 1. 外部 stage を作成する
CREATE STAGE csv_unload_stage
URL = 's3://unload/csv/'
CONNECTION = (
ACCESS_KEY_ID = '<your-access-key-id>'
SECRET_ACCESS_KEY = '<your-secret-access-key>'
);
ステップ 2. カスタム CSV ファイル形式を作成する
CREATE FILE FORMAT csv_unload_format
TYPE = CSV,
RECORD_DELIMITER = '\n',
FIELD_DELIMITER = ',',
COMPRESSION = gzip, -- Unload with gzip compression
OUTPUT_HEADER = true, -- Unload with header
SKIP_HEADER = 1; -- Only for loading, skip first line when querying if the CSV file has header
ステップ 3. CSV ファイルにアンロードする
COPY INTO @csv_unload_stage
FROM (
SELECT *
FROM generate_series(1, 100)
)
FILE_FORMAT = (FORMAT_NAME = 'csv_unload_format')
DETAILED_OUTPUT = true;
結果:
┌──────────────────────────────────────────────────────────────────────────────────────────┐
│ file_name │ file_size │ row_count │
├──────────────────────────────────────────────────────────────────┼───────────┼───────────┤
│ data_c8382216-0a04-4920-9eca-7b5debe3eed6_0000_00000000.csv.gz │ 187 │ 100 │
└──────────────────────────────────────────────────────────────────────────────────────────┘
ステップ 4. アンロードした CSV ファイルを確認する
SELECT COUNT($1)
FROM @csv_unload_stage
(
FILE_FORMAT => 'csv_unload_format',
PATTERN => '.*[.]csv[.]gz'
);
結果:
┌───────────┐
│ count($1) │
├───────────┤
│ 100 │
└───────────┘