有没有办法通过 BigQuery Java 库从本地 CSV 文件加载表?当我尝试将本地文件 URI 传递给 JobConfigurationLoad.setSourceUris() 时,我收到错误“源 URI 必须是 Google 存储位置”。
相关,如果我需要先将文件上传到 Google Cloud Storage,如果我在将文件加载到 BigQuery 后立即从云存储中删除文件,我需要支付什么费用?
有没有办法通过 BigQuery Java 库从本地 CSV 文件加载表?当我尝试将本地文件 URI 传递给 JobConfigurationLoad.setSourceUris() 时,我收到错误“源 URI 必须是 Google 存储位置”。
相关,如果我需要先将文件上传到 Google Cloud Storage,如果我在将文件加载到 BigQuery 后立即从云存储中删除文件,我需要支付什么费用?
使用 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))
您可以使用多部分 mime 请求直接上传文件...请参阅此处的 bigquery 导入文档。java中没有例子,但是python中有一个应该比较容易适应。但是,如果您要处理非常大的文件,最好先将文件上传到 Google Cloud Storage。
如果您将文件暂存到 Google Cloud Storage 然后删除它们,您可能需要支付最多 24 小时的存储费用(我不确定,但肯定不会超过 24 小时的存储时间)。