1

我想将数据从 Google Cloud Storage 上传到 Big Query 中的表。有我的代码来创建工作:

    Job job = new Job();
    JobConfiguration config = new JobConfiguration();
    JobConfigurationLoad loadConfig = new JobConfigurationLoad();

    List<String> sources = new ArrayList<String>();
    sources.add("gs://bucket/file.cvs");
    loadConfig.setSourceUris(sources);

    TableReference tableRef = new TableReference();
    tableRef.setDatasetId("DATASET_ID");
    tableRef.setTableId(TABLE_ID);
    tableRef.setProjectId(PROJECT_ID);
    loadConfig.setDestinationTable(tableRef);

    List<TableFieldSchema> fields = FieldsBigQuery.schema();

    TableSchema schema = new TableSchema();
    schema.setFields(fields);

    loadConfig.setSchema(schema);
    config.setLoad(loadConfig);
    job.setConfiguration(config);

    Insert insert = _bigquery.jobs().insert(PROJECT_ID, job);
    insert.setProjectId(PROJECT_ID);
    JobReference jobRef =  insert.execute().getJobReference();

我没有任何错误或异常,但它没有将任何数据上传到我的表(表大小 0B)。我尝试创建没有任何数据的表,而不是将数据上传到该表,但事实并非如此。

我将不胜感激任何帮助,

非常感谢!

4

1 回答 1

1

记得通过以下方式检查工作状态:

JobStatus status =
    _bigquery.jobs().get(PROJECT_ID, jobRef.getJobId()).execute().getStatus();
System.out.println(status.toPrettyString());

如果一切正常,作业状态可能是 PENDING 或 RUNNING,您必须等到它完成。或者,您将能够阅读无法运行的原因和消息。

于 2013-05-29T18:49:46.830 回答