問題タブ [bulkloader]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
google-app-engine - AppEngineバルクアップローダーyamlのpost_import_function
Bulkloader.yamlを使用してデータをアップロードしているときにpost_import_functionを使用しようとしています。このリンクに従って、App Engineバルクアップローダーyamlでpost_import_functionを使用して、エンティティ操作にタイプgoogle.appengine.api.datastore.Entityを使用しています。リンクのように、これは「dict」のサブクラスです。ただし、このエンティティにメソッドを適用する方法がわかりません。
私のコードは次のようになります(私はGeomodelを使用しています):
instance.update_location()
、私が問題を抱えているところです。そして、私はこのステートメントをどのように書くべきかわかりません。
java - Java GoogleAppEngineバルクローダーを使用してデータストア全体を1つのcsvファイルにダウンロードする
現在、この--kind
パラメーターを使用して、ダウンロードする種類を--filename
指定し、作成するcsvファイルの名前を指定しています。、、--rps_limit
およびはダウンロードを高速化するために使用されます--bandwidth_limit
。--batch_size
たとえば、私が使用しているゲームの種類をダウンロードするには、次のようにします。
では、1つのcsvファイルに固有のものではなく、データストア全体をダウンロードするappcfg.pyコマンドはありますか?
ありがとう!
java - java google app engine bulkloader.yaml を使用して、__key__ の export_transform でデータをアップロードすると、ID/NAME 列が id (long) から name (string) に変更されます
私の質問は次のようなものだと思います: BulkLoader -export_transform OR https://stackoverflow.com/questions/3220911/gae-datastore-export-transform
基本的に、バルクローダーを使用して、作成したエンティティをバックアップおよび復元しています。テストするために、「ゲーム」の種類を使用して、それを game.csv という名前の csv ファイルに出力しています。
これは私が経験するプロセスです:
以下を使用してゲームの種類を game.csv にダウンロードします。
appcfg.py download_data --config_file=bulkloader.yaml --kind=Game --filename=game.csv --application=MyAppId --url= http://MyAppId.appspot.com/remote_api --rps_limit=500 -- bandwidth_limit=2500000 --batch_size=100
すべてのゲーム エンティティを削除します。次に、アプリの管理ポータルのデータストア ビューアー タブを確認したところ、データ ストアにエンティティがなくなっていることがわかりました。
以下を使用して作成した game.csv を使用して、ゲームの種類をアップロードします (コマンドはdownload_dataと同じですが、 upload_data を使用します) :
appcfg.py upload_data --config_file=bulkloader.yaml --kind=Game --filename=game.csv --application=MyAppId --url= http://MyAppId.appspot.com/remote_api --rps_limit=500 -- bandwidth_limit=2500000 --batch_size=100
「名前」でエンティティを取得するサーブレットを実行します (これは、以下の Game.java に示されているプロパティです)。
次のエラーが発生します。
これは、bulkloader.yamlファイルがプロパティに対して正しく構成されていないことに関係していると思われ__key__
ます。というわけで以下に掲載しました。
データの削除とアップロードの前に、「ゲーム」の種類 (アプリの管理ポータルのデータストア ビューアー タブ内) は、エンティティ行ごとに ID =12345、ID=67890 ... のID/NAME
ようなハイパーリンクを含む列を表示します。
アップロード後、datastire ビューアは、エンティティ行ごとに NAME =12345、NAME=67890ID/NAME
... のようなハイパーリンクを含む列を表示します。
考えられる原因は?
実際に質問をhttps://groups.google.com/forum/?hl=en#!topic/objectify-appengine/FFuB2Onfnzc__key__
に投稿しましたが、プロパティを文字列に変換するのを避けるための構文がわかりませんデータをアップロードします。
Jeff (Objectify3.0 の作成者) は次のように述べています。
エラー メッセージには、データストア内のデータが文字列名のキーであることが示されていますが、Game エンティティには数値の Long @Id があります。バルクローダーの構文はよくわかりませんが、最も疑わしい行は次のとおりです。
ここですべての数値 ID を文字列に変換しているように見えますが、これが問題になります。それらを数字のままにしておきます。
を削除しようとしましたexport_transform: transform.key_id_or_name_as_string
が、ダウンロードすると csv ファイルが空です。
--config_file
パラメータとbulkloader.yamlファイルの使用を避け、バルクローダーに変換せずにデータをダウンロード/アップロードさせることが解決策になるのでしょうか?
関連する可能性がある場合の追加情報
objectify3.0.jar を使用して GAE データストアを操作しています。したがって、私のゲームの種類は次のようになります。
python - GoogleAppEngineバルクローダーでkey_nameを使用してデータをアップロードする方法
データをアップロードできますが、key_nameが空です。CSVの「id」をデータストアのkey_nameとして使用するにはどうすればよいですか?
他のデータは外部キーとして「id」を使用するため、「id」をkey_nameとして使用するのが好きです。GoogleAppEngineは初めてです。
これはCSVデータです。
これはYAMLです
PS:ローカル環境にデータをアップロードしようとしています。
アップデート
助けてくれてありがとう、私はコードを試しましたが、うまくいきません。結果は奇妙です。
ターミナルウィンドウに、アップロードが正常に終了したことを示すログメッセージが表示されますが、Google App Engineコンソール(http:// localhost:8080 / _ah / admin / datastore)にレコードが見つかりません。データストアは空で、レコードはありません。
ターミナルウィンドウのログメッセージはこちらです
コマンドを入力する
結果メッセージ
私もこれを試しましたが、結果は同じでした。ターミナルは成功を表示しますが、GoogleAppEngineコンソールにはレコードがありません...。
PS:Mac OS XSnowLeopardとGoogleAppEngineランチャーを使用しています。
java - Java Google App Engineバルクローダーアップロードエラー「OverflowError:日付値が範囲外です」
バルクローダーを使用して、あるGAEサーバーからレビューの種類をダウンロードし、別のGAEサーバーにアップロードしています。このレビューの種類には、約30,000のエンティティが含まれています。
次のコマンドを使用してアップロードします。
注:全体のエラーはかなり長いです。だから私はこの質問の最後にそれを含めました。
アップロードはまったく開始されず、次の行で停止します。[INFO ] Opening database: bulkloader-progress-20110611.222101.sql3
トレース全体の下部に表示されます。lambda val: _EPOCH + datetime.timedelta(microseconds=val), OverflowError: date value out of range
これは、私の公開日列にある不適切な形式の日付が原因であると思われます(レビューの種類全体については以下を参照してください)。
私がすでにそれを修正しようとしたこと
SELECT * FROM Review where publisheddate = null
GAE管理ポータルでGQL:を実行したところ、 publisheddate列にnull値を持つ約15のエンティティが見つかりました。そこで、それらを削除し、再ダウンロードして、レビューの種類を再アップロードしてみました。それでも同じエラーが発生します。
私は設定ファイルパラメータなしでuploadコマンドを使用しているので、私は考えています--config_file=bulkloader.yaml
(例えば、私が指定していない上記のアップロードを参照してください--config_file
)
review.csvファイルに何がダウンロードされるかを判断するために、データストアの統計に依存しています。
nullのpublisheddateを持つエンティティを削除したので、この再ダウンロードとすぐの再アップロードは、最初のダウンロードとアップロードと何の違いもありません。データストアの統計はまだ更新されていないため。
私の質問
30、000のエンティティがあるため、日付の形式が正しくないエンティティを見つける方法がわかりません。公開日の値が悪いエンティティをすばやく見つけることはできますか?
誰かがこの問題を修正する方法を知っていますか?エラートレースから、実際の問題が何であるかはわかりません。
レビューの種類
objectify3.0.jarを使用してGAEデータストアを操作しています。したがって、私のレビューの種類は次のようになります。
エラー全体
formatting - バルクローダー構文エラー
データをデータストアに一括ロードするのに苦労していたので、専門家の助けが必要なところまで来ました。
やっていることが難しいとは思いません。次の構成ファイルがあります。
appcfg.py コマンドを使用すると、エラー メッセージは次のように終了します。
最初はメモ帳で編集する方が速いため、.txt ファイルを使用しました。それが問題であるかどうかはわかりません。appspot の remote_api はすべて問題ないようです。
トップラインで機能しなくなったので、かなり根本的な問題だと思います。元のファイルの先頭にあるコメント行を削除しました - おそらくそれが原因でした。
私を正しく設定するために実際の例を見つけようとしましたが、それらはすべて上記の構文に従っているように見えます。または、わずかに異なる場合は、両方のバリアントを試しました。
初めてのクラウド アプリの一括読み込みに関するヘルプをいただければ幸いです。解決するかどうかにかかわらず、私の投稿を読むのに時間を割いてくれた人に感謝します。
sql - Interop.SQLXMLBULKLOADLib.dll に関する問題
古い dts パッケージを SSIS パッケージに変換し、Windows 2008 サーバーで実行しようとしました。この SSIS パッケージは、Interop.SQLXMLBULKLOADLib.dllを使用して XML データをデータベースにロードしようとする Win32 exe ファイルを実行します。しかし、このexeが実行されると、次のエラーが発生します。
COM 例外: CLSID {8270CB2F-B0E6-4C37-8A40-D70778F47894} を持つコンポーネントの COM クラス ファクトリを取得できませんでした。次のエラーが原因です: 80040154。
Windows 2000 互換モードで .exe ファイルを実行しようとしています。何か提案があれば教えてください。
ありがとう
python - 一括アップローダーでテキストを適切にエンコードする
一括アップローダーの文字列をエンコードする適切な方法は何ですか? テキストフィールド内でアポストロフィに遭遇すると、現在救済されています。
CSV ファイルの例を次に示します。
これが私のbulkloader.yamlです:
このようなサンプル (テキストにアポストロフィが含まれる) を使用してローダーを実行すると、次のエラーが発生します...
UnicodeEncodeError: 'ascii' コーデックは位置 x の文字 u'\u2019' をエンコードできません: 序数が範囲内にありません(128)
どんな助けでも大歓迎です。
google-app-engine - 2 GB のデータベースを一括アップロードするのに必要な CPU 時間は?
私はプログラマーを雇って、自分の Web サイト (元々 Django と MySQL を使用して実装) を Google App Engine に移植しました。元の Web アプリのデータベースのサイズは約 2 GB で、最大のテーブルには 500 万行あります。私が理解しているように、これらのコンテンツを移植するために、プログラマーはデータベースを JSON にシリアル化し、それを Google アプリ エンジンにアップロードしています。
これまでのところ、GAE の請求によると、彼のアップロードには 100 時間の CPU 時間が使用されていますが、データベースには約 50 または 100 MB しかロードされていないようです。このような少量のデータに対して妥当な量の CPU 時間ですか? MySQL はこれだけの量のデータを数分でロードできるので、GAE が 1000 倍遅くなる理由がわかりません。彼は何か非効率なことをしていますか?