java - 谷歌 BigQuery : loading data from a local CSV file using the Java API with custom field delimiter

标签 java csv google-bigquery

我正在尝试使用 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/

相关文章:

python - 删除 csv 文件中正在使用的行

google-bigquery - 通过 API 更新表过期时间

google-bigquery - FIRST() 聚合是否会过滤掉 bigquery 中的 NULL 值?

google-bigquery - 错误 : Scalar subquery produced more than one element

java - REST - 如何缩小 Json 响应

c# - 如何拆分列可能包含逗号的csv

java - 一对数组,java中的ArrayList

python - csv.reader 在字段名称中返回 "OrderedDict"值

java - SQLite 数据库加密的替代方案

java - BigDecimal 除法、舍入和求和