これを投稿する前に、私はインターネット上の同様の投稿を行っていますが、一致するものは見つかりませんでした。既に答えられていて、私がポストを見逃していたなら、お詫びします。Python APIを使用したBigqueryの更新文
Google Cloud StorageからBigQueryへのデータをアプリエンジン経由で読み込むPythonスクリプトを作成しました。アプリケーションエンジンには60秒のタイムアウト時間があるため、これらのジョブを非同期モードで送信し、JOB IDをbigqueryテーブルの1つに保存したいとします。別のスクリプトはジョブのステータスを保持し、ジョブが「完了」であれば結果をプルし、そのテーブルで完了したジョブ状態を更新します。次回は同じジョブのジョブステータスをチェックしません。
「従来のSQLを使用する」を選択解除してもAPIを使用しないと、更新ステートメントがウェブコンソールからうまく機能しています。私はクエリの前に#standardSQLを使用するのと同じように違う方法を試しましたが、運はありません。
_qry = "update temp.temp set name1='xyz1' where name1='hjk'"
job_data = {
'jobReference': {
'projectId': cfg._projectid,
'job_id': str(uuid.uuid4())
},
'configuration': {
'query': {
'query': _qry,
'timeoutMs': 60000,
'useLegacySql': false
},
'allowLargeResults': True,
'priority': 'BATCH'
}
}
_jbslist = _bq.jobs()
_jbq_response = _jbslist.insert(projectId=_projectid,body=job_data).execute()
_jbslist = _bq.jobs()
_job = None
_job =
_jbslist.get(projectId=_projectid,jobId=_jbq_response['jobReference']['jobId']).execute()
'traceback'メッセージが表示されますか? –
これは私が持っているエラーメッセージです。 エラー: クエリ:1.1 - 1.58:認識できないトークンの更新。 (エラーコード:invalidQuery) – user374374
あなたのJSONに '' useLegacySql ':false'があります。コードをどのように実行していますか? 'false'はPythonでは定義されていませんが、' False'でなければなりませんが、インタプリタはまだエラーを送出しているはずです。確認するように頼む。 –