时间戳字段的bq加载命令



当我尝试使用时间戳字段的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如下所示:

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

**

看起来您的CSV有点格式错误。尝试完全删除引号:

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

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

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

最新更新