我正在尝试使用 Java API 将本地 CSV 文件的行加载到 BigQuery 中。
CSV 文件以竖线分隔。
BigQuery 的官方文档建议了以下解决方案,通过 POST 请求实现:
TableId tableId = TableId.of(datasetName, tableName);
WriteChannelConfiguration writeChannelConfiguration =
WriteChannelConfiguration.newBuilder(tableId)
.setFormatOptions(FormatOptions.csv())
.build();
TableDataWriteChannel writer = bigquery.writer(writeChannelConfiguration);
// Write data to writer
try (OutputStream stream = Channels.newOutputStream(writer)) {
Files.copy(csvPath, stream);
}
// Get load job
Job job = writer.getJob();
job = job.waitFor();
LoadStatistics stats = job.getStatistics();
return stats.getOutputRows();
此解决方案仅在 CSV 以逗号分隔的情况下有效。
我认为可以使用 FormatOptions
类指定分隔符,但该类没有允许执行此操作的方法。
有什么建议吗?
最佳答案
我终于通过用 .setFormatOptions(com.google.cloud.bigquery.CsvOptions.newBuilder().setFieldDelimiter) 替换
.setFormatOptions(FormatOptions.csv())
解决了我的问题("|").build())
关于java - 谷歌 BigQuery : loading data from a local CSV file using the Java API with custom field delimiter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48902111/