GAEでブログする時に気になる記事のバックアップ、リストア方法(CSV編)
前回 はGAEのDataStoreをバイナリでバックアップする方法を紹介した訳ですが、これではバックアップした内容をチェックしたり、修正したり、他のアプリに移行したり色々と不便なこともあるので、今回はDataStoreをCSVでバックアップ、リストアする方法を書きます。
CSVでバックアップ、リストアするためにはBulk loaderを使います。その時各カラムのデータ変換方法を書く必要があるのですが、その方法として、設定ファイルを使う方法とコードを書く方法があります。今回はコードを書く方法はGAEでは非推奨となっていますので、設定ファイルを使う方法でやりました。
手順は次の通りです 1. Remote APIを有効にする(app.yamlに追加) これは _前回 と同じです 2. 設定ファイルを作成する
これでC:hogefugaフォルダにbulkloader.yamlが出来ます 3. 設定ファイルを変更する bulkloader.yamlを編集して、実際にバックアップ、リストアが出来るようにします。例としてGAE本家サイトの「 データのアップロードとダウンロード 」を引用します
上のTODO:と書いてあるところを適切に修正します。修正後の結果も引用します
4. バックアップ
バックアップ、リストアでは必ず--kindを指定します。そうすると--kindで指定したEntityのバックアップが取れます。
5. リストア
とするとリストア出来るのですが・・・・cpedialogやbloggartでやってみると、idで入って欲しいところがnameで入ったり、タグが登録出来なかったりと色々と問題が出ました。それについての対処法は次回とか書いてたけど、もう書かないかな。
CSVでバックアップ、リストアするためにはBulk loaderを使います。その時各カラムのデータ変換方法を書く必要があるのですが、その方法として、設定ファイルを使う方法とコードを書く方法があります。今回はコードを書く方法はGAEでは非推奨となっていますので、設定ファイルを使う方法でやりました。
手順は次の通りです 1. Remote APIを有効にする(app.yamlに追加) これは _前回 と同じです 2. 設定ファイルを作成する
C:\Python\Python.exe appcfg.py create_bulkloader_config --application=fuga --url=http://fuga.appspot.com/_ah/remote_api --filename=C:\hoge\fuga\bulkloader.yaml C:\hoge\fuga
これでC:hogefugaフォルダにbulkloader.yamlが出来ます 3. 設定ファイルを変更する bulkloader.yamlを編集して、実際にバックアップ、リストアが出来るようにします。例としてGAE本家サイトの「 データのアップロードとダウンロード 」を引用します
transformers: - kind: Permission
System Message: ERROR/3 (<string>, line 21)
Unexpected indentation.
connector: # TODO: Choose a connector here: csv, simplexml, etc... connector_options:
System Message: ERROR/3 (<string>, line 23)
Unexpected indentation.
# TODO: Add connector options here--these are specific to each connector.
System Message: WARNING/2 (<string>, line 24)
Block quote ends without a blank line; unexpected unindent.
property_map:
property: __key__ external_name: key export_transform: transform.key_id_or_name_as_string
property: account external_name: account # Type: Key Stats: 119 properties of this type in this kind. import_transform: transform.create_foreign_key('TODO: fill in Kind name') export_transform: transform.key_id_or_name_as_string
property: invite_nonce external_name: invite_nonce # Type: String Stats: 19 properties of this type in this kind.
property: role external_name: role # Type: Integer Stats: 119 properties of this type in this kind. import_transform: transform.none_if_empty(int)
property: user external_name: user # Type: Key Stats: 119 properties of this type in this kind. import_transform: transform.create_foreign_key('TODO: fill in Kind name') export_transform: transform.key_id_or_name_as_string
上のTODO:と書いてあるところを適切に修正します。修正後の結果も引用します
kind: Permission
System Message: WARNING/2 (<string>, line 53)
Bullet list ends without a blank line; unexpected unindent.
connector: csv property_map:
System Message: ERROR/3 (<string>, line 55)
Unexpected indentation.
property: __key__ external_name: key export_transform: transform.key_id_or_name_as_string
property: account external_name: account import_transform: transform.create_foreign_key('Account') export_transform: transform.key_id_or_name_as_string
property: invite_nonce external_name: invite_nonce
property: role external_name: role import_transform: transform.none_if_empty(int)
property: user external_name: user import_transform: transform.create_foreign_key('User') export_transform: transform.key_id_or_name_as_string
4. バックアップ
C:\Python\Python.exe appcfg.py download_data --application=fuga --url=http://fuga.appspot.com/_ah/remote_api --filename=C:\hoge\fuga\bkup.csv --kind=Permission --config_file=C:\hoge\fuga\bulkloader.yaml C:\hoge\fuga
バックアップ、リストアでは必ず--kindを指定します。そうすると--kindで指定したEntityのバックアップが取れます。
5. リストア
C:\Python\Python.exe appcfg.py upload_data --application=fuga --url=http://fuga.appspot.com/_ah/remote_api --filename=C:\hoge\fuga\bkup.csv --kind=Permission --config_file=C:\hoge\fuga\bulkloader.yaml C:\hoge\fuga
とするとリストア出来るのですが・・・・cpedialogやbloggartでやってみると、idで入って欲しいところがnameで入ったり、タグが登録出来なかったりと色々と問題が出ました。それについての対処法は次回とか書いてたけど、もう書かないかな。