0

作成するテーブルのスキーマが定義されているテキスト ファイル schema.txt があります。

このファイルを、テーブルの作成に使用しているマルチパート HTTP 要求に含めたいと考えています。

マルチパート HTTP 要求で schema.txt ファイルを指定するにはどうすればよいですか?

以下は私が現在行っていることです(ただし、機能していません):

def loadTable(service, projectId, datasetId, targetTableId, sourceCsv, filenm):
try:
    jobCollection = service.jobs()
    jobData = {
        'projectId': projectId,
        'configuration': {
            'load': {
                'sourceUris': [sourceCsv],
                'schema': filenm,
                'destinationTable': {
                    'projectId': projectId,
                    'datasetId': datasetId,
                    'tableId': targetTableId
                },
                'createDisposition': 'CREATE_IF_NEEDED',
                'writeDisposition': 'WRITE_TRUNCATE',
                'encoding': 'UTF-8'
             }
        }
    }

filenm「schema.txt」はどこにありますか。

次のようにスキーマを直接指定できることはわかっています。

'schema': {
    'fields': [
               {
                   'name': 'level',
                   'type': 'STRING',
               },
               {
                   'name': 'message',
                   'type': 'STRING',
               }
              ]
           },

しかし、代わりに、スキーマを含むファイルを指定したいと考えています。

4

1 に答える 1

0

うーん、ファイルから直接取り込む場合を除き、「マルチパート HTTP リクエスト」が必要な理由がわかりません。ここでは、Cloud Storage オブジェクトを示す CSV 入力を指定しています。

詳細については、 https ://developers.google.com/bigquery/docs/developers_guide#storageimport をご覧ください。

いずれにせよ、これは実際には BigQuery に関する質問ではなく、Python に関する質問です.これはどういう意味ですか?

import json

def loadTable(project_id, dataset_id, target_table, source_csv, filename):

  file = open(filename, 'r')
  schema = file.read()
  file.close()

  schema_json = json.loads('{%s}' % schema)

  job_data = {
    "projectId": project_id,
      "configuration": {
            "load": {
                "sourceUris": [source_csv],
                "schema": schema_json,
                "destinationTable": {
                    "projectId": project_id,
                    "datasetId": dataset_id,
                    "tableId": target_table
                },
                "createDisposition": "CREATE_IF_NEEDED",
                "writeDisposition": "WRITE_TRUNCATE",
                "encoding": "UTF-8"
             }
        }
    }


  print json.dumps(job_data, indent=2)

loadTable('project_id', 'dataset_id', 'target_table', 'source_csv', '/tmp/schema.txt')
于 2012-06-13T23:40:46.707 に答える