動機

Azure Database for MySQLのデータ検証をするにあたりCSVで手元にファイル化したくなった。

MySQL Workbenchでトライするも遅すぎて失敗

MySQL Workbenchで欲しいテーブルを右クリックすると「Table Data Export Wizard」を押下するとデータをCSV or jsonでローカルに保存できる。
マイクロソフト公式でもこの方法が紹介されている。
https://docs.microsoft.com/ja-jp/azure/mysql/concepts-migrate-import-export
しかしとにかく速度が出ないので実質この方法は使えなかった。

mysqldumpコマンドでトライするも失敗

Azure環境だとどうもうまくいかなそう。
ここから下の手順でうまくいった。

Azure Cloud Shell と MySQLコマンド を組み合わせてCSVをクラウド環境に作る

Azureポータルに入りAzure Cloud Shellを開いて以下のコマンドを叩く。

mysql -h {MySQLのサーバー} -u {MySQLのユーザー} -p {対象のDB} -e "select * from hogehoge;" | sed -e 's/^/"/g' | sed -e 's/$/"/g' | sed -e 's/\t/","/g' > /tmp/fugafuga.csv

これでAzure上の一時ファイルにデータが保存される。

azcopyコマンドで作成したCSVをStorage Accountに保存する

作ったCSVをAzure Storage AccountのBlobストレージに保存する。

azcopy cp "/tmp/fugafuga.csv" "{storageアカウントのURL+SAS}"

ダブルクォーテーションで囲わないとうまくいかなかった。
SASの発行はAzure Storage Exploreが簡単。
保存先にするStorage Accountを選択して左下にあるメニューから書き込み権限付きのSASを発行する。


発行したらクエリ文字列が生成されるのでこれを保存先のBlobコンテナのURLにくっつけてあげればOK。

転送先のURLはこんな感じになる。

https://{your-storage-account}.blob.core.windows.net/{your-container-name}/{コピペしたSASのクエリ文字列}

Storage Accountに保存したCSVをローカルにダウンロードする

これで保存先のBlobコンテナに作ったCSVが保存される。
Storage Accountなりにcsvが保存されたことを確認してローカルにダウンロードできるようになる。
教訓、Workbenchのデータエクスポートは使わない。

Category
Tags
No Tag

No responses yet

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です