BigQuery无法从tshark导入CSV

时间:2014-02-10 19:38:35

标签: csv awk google-bigquery

目前,我已经记录了所有符合特定消息传递标准的数据包,并将它们输出到CSV中。然后将CSV存储在Google CloudStorage上,以便导入BigQuery。

这是tshark输出的CSV中的一个示例行。

"1380106851.793056000",
"1.1.1.1",
"2.2.2.2",
"99999",
"1111",
"raw:ip",
"324",
"af:00:21:9a",
"880",
"102",
"74:00",
"ORIG",
"It's text or !\x0a\" 's not D",
"0x00",
"0",

BigQuery不会导入此行,声称“close double quote(”)和field separator:field之间的数据以:“开头。”我假设它是第13列(“它是文本或!\ x0a \”不是D“)导致了这个问题,但我不确定如何否定它。此列包含消息文本,可以合理地假设它可能永远不会包含平衡语法。

我能想到的唯一补救措施是在文件上运行awk并用单引号替换任何非语法双引号。

有什么我错过的吗?

1 个答案:

答案 0 :(得分:2)

我不确定为什么tshark用反斜杠来逃避双引号,但根据RFC 4180,它们应引用双引号:

  

“字段中的(双)引号字符必须用两个表示   (双)引用字符。“

BigQuery很乐意以这种方式摄取转义的报价:

  • 不起作用:“这是文字或!\ x0a \”不是D“
  • 作品:“这是文字或!\ x0a”“不是D”

有没有办法告诉tshark如何正确地逃避CSV?否则我敢打赌,如果引用RFC标准,它将是一个受欢迎的补丁。此外,如果有必要,这个备用转义机制可以实现为BigQuery功能(我猜这个问题中的投票可以作为衡量它需要多少的指标)。