mysqldump で出力した tsvを Redshift に import

  • 0
    いいね
  • 0
    コメント

    mysqldump で出力したTSVには下記のような特徴があって扱いがめんどくさいですが、Redshiftのオプション指定することで 無加工で Redshift に取り込めます。

    • nullは \N になる
    • フィールド内のタブ(\t) は、 \\t になる (\でエスケープされる)
    • フィールド内の改行(\n) は、 \\n になる (\でエスケープされる)

    mysqldump で tsv として dumpする

    mysql> select * from users into outfile '/var/lib/mysql-files/users.txt';
    

    s3 に上げる

    $ aws s3 cp /var/lib/mysql-files/users.txt s3://bucket_name/
    

    Redshift にロード

    $ psql -U $user $db_name --host=$host --port=5439
    
    # copy table_name from 's3://bucket_name/users.txt'
    iam_role 'arn:aws:iam::000000:role/HogeRole'
    blanksasnull
    emptyasnull
    delimiter '\t'
    escape
    ;
    

    オプション

    • delimiter は タブ文字 \t を指定する
    • escape オプションつけることで、エスケープされた改行とタブをそのまま取り込める
    • csv オプションは指定しない
    • emptyasnull blanksasnull はなくても大丈夫と思う