当前位置: 首页 > 知识库问答 >
问题:

使用java云函数写入bigquery

乐正远航
2023-03-14

我想创建一个表,然后使用云函数写入bigquery,但是我不想复制表中的数据,所以我先删除表,然后在每次调用函数时创建表。

    public static void runCreateTable() {
        Schema schema =
                Schema.of(
                        Field.of("id", StandardSQLTypeName.INT64),
                        Field.of("name", StandardSQLTypeName.STRING));
        createTable(DATASET, TABLE_NAME, schema);
    }
public static void createTable(String datasetName, String tableName, Schema schema) {
        try {
            BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
            TableId tableId = TableId.of(datasetName, tableName);
            TableDefinition tableDefinition = StandardTableDefinition.of(schema);
            TableInfo tableInfo = TableInfo.newBuilder(tableId, tableDefinition).build();
            bigquery.create(tableInfo);
            System.out.println("Table created successfully");
        } catch (BigQueryException e) {
            System.out.println("Table was not created. \n" + e.toString());
        }
    }
BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

            if (bigquery.getTable(TableId.of(DATASET, TABLE_NAME)).delete()) {
                runCreateTable();
                TableRow row = new TableRow();

                for (Map.Entry<String, Object> entry : campaign.entrySet()) {
                    row.set("id", entry.getKey()).set("name", entry.getValue());
                    bigquery.insertAll(InsertAllRequest.newBuilder(bigquery.getTable(TableId.of(DATASET, TABLE_NAME))).addRow(row).build());
                }
            }

所以错误是当我首先删除表时,当它被重新创建以写入时,插入所有无法找到表我得到了这个错误:表abc.abc_names找不到

共有1个答案

仉磊
2023-03-14

我建议您避免重新创建表格,而是删除其内容:

DELETE FROM TABLE_NAME WHERE 1=1

另外,您可以检查以下答案:

新bigquery表的“未找到:表”

 类似资料:
  • 云功能文档说 //使用Firebase管理SDK访问Firebase实时数据库。const admin=require('firebase-admin');管理初始化EAPP(); 我使用的是Cloud Firesta,而不是实时数据库。我如何访问它?

  • BaaS.invokeFunction(functionName, params, sync) 参数说明 参数 类型 必填 描述 functionName Number 是 云函数名 params Object 否 传递给云函数的参数 sync Bool 否 是否等待返回函数执行结果,默认为 true 返回参数说明 参数 类型 描述 code Number code 为 0 时表示成功执行云函数,

  • 如何使用 一般云函数主要会涉及创建和触发两个操作 1.如何创建和编写云函数: 开发者可以登录到知晓云控制台,进入到引擎-云函数界面,知晓云提供了一个在线代码编辑器,你可以在上面编写你的云函数。目前编写云函数的渠道只有这里,后续我们会提供命令行功能上传云函数等渠道。 创建完云函数后为其编写逻辑代码,目前支持的编程语言仅有 Node.js,后续我们也会增加对其它语言的支持。 编写完代码,点击提交,你的

  • 在以前的GCP项目中,我们部署了基于Python的云功能(使用gcloud cli),理想情况下,我们希望继续使用Python实现Firebase云功能。所以我的问题是: > 是否可以部署基于Python的Firebase云功能?如果没有: 我们是否可以回到使用gcloud cli部署基于Python的GCP云函数,并且仍然让它们作为Firestore触发器工作?

  • 目前知晓云云函数支持的 Node.js 开发语言包括如下版本: Node.js 8.9 代码编写格式 在云函数中使用 Node.js 编程,需要定义一个 Node.js 函数作为入口,一个简单的函数定义如下: exports.main = function helloWorld(event, callback) { let name = event.data.name callback(n

  • 我希望从ParDo函数中调用操作,为中的每个键生成单独的BigQuery表(我使用的是python SDK)。这里有两个类似的线程,不幸的是没有帮助: 1)https://stackoverflow.com/questions/31156774/about-key-grouping-with-groupbykey 当我执行以下代码时,第一个键的行被插入到BigQuery,然后管道失败,出现以下错误