AWS RedShiftにてテーブルへデータをロードする際に苦戦したメモ
1.テーブルの生成(CREATE TABLE)
redshiftに作成したインスタンスにテーブルを生成。
charのsize5で生成したつもり
出来上がったテーブルを見るとchar(1)になっている
原因は不明
仕方ないのでSQLで再生成
DROP TABLE "public"."tbl_test2";
CREATE TABLE "public"."tbl_test2" ( test1 character(5) NOT NULL encode lzo,
test2 character varying(256) encode lzo, test3 integer encode az64, test4 time
without time zone encode az64, test5 date encode az64, CONSTRAINT
tbl_test2_pkey PRIMARY KEY(test1));
2.CSVからデータをロード
S3にアップロードしたCSVファイルへアクセスする為には事前にロール設定が必要です
こちらを参考にしてみて下さい
COPY dev.public.tbl_tenpo (test1,test2,test3,test4,test5)
FROM 's3://younet-s3/test.csv'
IAM_ROLE 'arn:aws:iam::9999999999:role/redshift-full-roll'
FORMAT AS CSV DELIMITER ',' QUOTE '"' REGION AS 'ap-northeast-1'
データ不備でロードエラーになるとその結果がsys_load_error_detail
に格納される為、下記SQLにてエラーの内容を確認してデータを修正
SELECT query_id,
table_id,
start_time,
trim(column_name) AS column_name,
trim(column_type) AS column_type,
trim(error_message) AS error_message
FROM sys_load_error_detail
ORDER BY start_time DESC
LIMIT 1;
Redshiftにて生成したテーブルにデータを投入するまででした。