エクスポートしたいテーブル名を列挙して行う。
// Groovy Version: 2.5.0 JVM: 1.8.0_181 Vendor: Azul Systems, Inc. OS: Mac OS X
class Config {
static AWS_ACCESS_KEY_ID = System.getenv().AWS_ACCESS_KEY_ID
static AWS_SECRET_ACCESS_KEY = System.getenv().AWS_SECRET_ACCESS_KEY
static TD_DATABASE = System.getenv().TD_DATABASE
static S3_BUCKET = System.getenv().S3_BUCKET
}
'''\
table_a
table_b
.
.
'''.eachLine {
println "export $it"
"td table:export ${Config.TD_DATABASE} $it --s3-bucket ${Config.S3_BUCKET} --prefix $it --aws-key-id ${Config.AWS_ACCESS_KEY_ID} --aws-secret-key ${Config.AWS_SECRET_ACCESS_KEY} --file-format tsv.gz --encryption s3".execute()
}
各テーブル名のs3 keyの下に分割、圧縮されてエクスポートされるので便利。
テーブルが大きすぎる場合はOutOfMemory Errorが出る場合があるが、Treasure Dataの全レコードに付与されているtime(created_at相当)での範囲指定が出来るので、適宜指定してセルフ分割してエクスポートする。
# 2019年分だけをエクスポート
$ td table:export $TD_DATABASE table_a --s3-bucket $S3_BUCKET --prefix table_a__2019 --aws-key-id $AWS_ACCESS_KEY_ID --aws-secret-key $AWS_SECRET_ACCESS_KEY --file-format tsv.gz --encryption s3 --from 1546268400 --to 1577804400
その他
Treasure DataのConfluenceによると、東京リージョンにもエクスポート出来るように書かれているがエラーになってしまった。