时间戳字段的bq加载命令

时间:2019-11-18 20:35:45

标签: google-cloud-platform google-bigquery

当我尝试使用时间戳字段的bq load命令将值加载到表中时遇到错误,但是当我在GUI上直接插入时,相同的值似乎可以正常工作。

  1. 已经创建了表LOG,其created_time字段类型为TIMESTAMP。
  2. 这似乎可以插入。 Insert into testdataset.LOG (id, created_time) values (123,"2014-09-27T12:30:00.45Z");

  3. 此操作失败,并显示错误bq load --source_format=CSV --skip_leading_rows=1 --autodetect --noreplace myproject:testdataset.LOG ./test.csv

CSV的内容:

"ID","CREATED_TIME"
1,"2014-09-27T12:30:00.45Z"
2,"2014-09-27T12:30:00.45Z"

错误如下:

Field CREATED_TIME has changed type from TIMESTAMP to STRING

如果我将架构添加到命令中,如下所示:

bq load --source_format=CSV --skip_leading_rows=1 --autodetect --noreplace myproject:testdataset.LOG ./test.csv ID:INTEGER,CREATED_TIME:TIMESTAMP

我收到错误消息:Field CREATED_TIME has changed mode from REQUIRED to NULLABLE

更新:

**我遇到的是字段的顺序和csv中的引号...我还必须将字段created_time从REQUIRED更改为NULLABLE。一旦完成,我的新CSV如下所示:< / p>

    CREATE_TIME,ID
2014-09-27T12:30:00.45Z,123
2014-09-27T12:30:00.45Z,123

**

2 个答案:

答案 0 :(得分:2)

好像您的CSV格式有误。尝试完全删除引号:

ID,CREATED_TIME
1,2014-09-27T12:30:00.45Z
2,2014-09-27T12:30:00.45Z

答案 1 :(得分:1)

如果您的模式存在,则无需请求模式自动检测。如果可以的话,让BigQuery将目标字段转换为目标字段格式。为此,只需删除--autodetect选项

bq load --source_format=CSV --skip_leading_rows=1 --noreplace myproject:testdataset.LOG ./test.csv