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或解决方案的限制?)

我有两个问题:

  • 如何修复当前查询
  • 源文件OFFRS_5_0_TAXASSESSOR_0001_001.txt是许多源文件之一,文件名的最后三个字符显示该文件系列中的文件号。如何使用通配符,以便获取文件002.txt、003.txt等,例如OFFRS_5_0_TAXASSESSOR_0001_*.txt
  • 谢谢

    如何使用通配符,以便获取文件002.txt、003.txt等,例如OFFRS_5_0_TAXASSESSOR_0001_*.txt

    按照你的建议去做,例如:

    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。