使用本地文件通过 java 库加载 Google BigQuery 表

Posted

技术标签:

【中文标题】使用本地文件通过 java 库加载 Google BigQuery 表【英文标题】:Loading a Google BigQuery table through the java library with a local file 【发布时间】:2012-08-01 23:21:10 【问题描述】:

有没有办法通过 BigQuery Java 库从本地 CSV 文件加载表?当我尝试将本地文件 URI 传递给 JobConfigurationLoad.setSourceUris() 时,我收到错误“源 URI 必须是 Google 存储位置”。

相关,如果我需要先将文件上传到 Google Cloud Storage,如果我在将文件加载到 BigQuery 后立即从云存储中删除文件,我需要支付什么费用?

【问题讨论】:

【参考方案1】:

使用 Bigquery 插入方法:

public Insert insert(String projectId, com.google.api.services.bigquery.model.Job content,
        com.google.api.client.http.AbstractInputStreamContent mediaContent)

您有 2 个 AbstractInputStreamContent 实现:FileContent、InputStreamContent

例如:

val content = FileContent("application/octet-stream", new File("csv","data.csv")
val insertReq = bigquery.jobs().insert(PROJECT_ID, insertJob, content))

【讨论】:

【参考方案2】:

您可以使用多部分 mime 请求直接上传文件...请参阅 bigquery 导入文档here。 java中没有例子,但是python中有一个应该比较容易适应。但是,如果您要处理非常大的文件,最好先将文件上传到 Google Cloud Storage。

如果您将文件暂存到 Google Cloud Storage 然后删除它们,您可能需要支付最多 24 小时的存储费用(我不确定这一点,但肯定不会超过 24 小时的存储时间) .

【讨论】:

以上是关于使用本地文件通过 java 库加载 Google BigQuery 表的主要内容,如果未能解决你的问题,请参考以下文章

Google浏览器如何加载本地文件

从Google的CDN加载jQuery的正确方法,如果需要,可以使用回退到本地库

java.lang.IllegalArgumentException:无法加载本机库

允许 Google Chrome 使用 XMLHttpRequest 从本地文件加载 URL

为啥从 Google 的 AJAX 库 API 加载 JS 框架很重要?

JAVA加载一个目录下有依赖关系本地库的通用代码