Google bigquery 如何使用双管道分隔符将gcs文件正确加载到gbq中
我现有的查询:Google bigquery 如何使用双管道分隔符将gcs文件正确加载到gbq中,google-bigquery,google-cloud-storage,Google Bigquery,Google Cloud Storage,我现有的查询: bq load --field_delimiter="||" --skip_leading_rows=1 source.taxassessor gs://taxassessor/OFFRS_5_0_TAXASSESSOR_0001_001.txt taxassessor.txt 我得到的错误是: Not enough positional args, still looking for destination_table 我试图在Web UI中模拟该命令,但我无法复制,因为W
bq load --field_delimiter="||" --skip_leading_rows=1 source.taxassessor gs://taxassessor/OFFRS_5_0_TAXASSESSOR_0001_001.txt taxassessor.txt
我得到的错误是:
Not enough positional args, still looking for destination_table
我试图在Web UI中模拟该命令,但我无法复制,因为Web UI不允许使用双管分隔符(对UI或解决方案的限制?)
我有两个问题:
bq load --field_delimiter="||" --skip_leading_rows=1 source.taxassessor gs://taxassessor/OFFRS_5_0_TAXASSESSOR_0001_*.txt taxassessor.txt
它应该已经起作用了
如何修复当前查询
不确定您为什么会收到此消息,因为一切似乎都是正确的…但它仍然不应该工作,因为您的分隔符有两个字符,并且它们应该只有一个字符(例如,假设您的文件包含字符串“abcd | | efg | hijk | | l”
,很难分辨分隔符在哪里;它是前两个管道还是最后一个管道)
如果无法更改分隔符,可以做的一件事是将BigQuery中的所有内容保存为一个完整的字符串
字段。之后,您可以根据需要提取字段,例如:
WITH data AS(
select "alsdkfj||sldkjf" as field UNION ALL
select "sldkfjld|||dlskfjdslk"
)
SELECT SPLIT(field, "||") all_fields FROM data
所有_字段
将在您的文件中包含所有列,然后您可以将结果保存到其他表或运行任何您想要的分析
作为建议,如果您可以将此分隔符更改为只有一个字符的其他分隔符,可能会更好。您是否尝试过将标志放在位置参数之后?另外,我相信
--field|u delimiter
标志需要1个字符,但您有两个管道。问题是我的分隔符是两个管道“| |”……我能做什么?谢谢,我认为如果不在本地(在您的机器上)修改文件并将其加载到表中,就没有任何方法可以改变这一点。如果文件不太大,可以使用cat
。否则,您可能必须使用cp
将它们复制到我们的机器上,进行修改(将| |
替换为|
或,
),然后从本地机器将它们加载到表中。这两个管道不确定,但错误消息是您错过了目标表位置参数。但是,从你的命令来看,你确实提供了它。这看起来像是BigQuery命令客户端中的错误。请在上提交一个bug。