目前,我已经记录了所有符合特定消息传递标准的数据包,并将它们输出到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并用单引号替换任何非语法双引号。
有什么我错过的吗?
答案 0 :(得分:2)
我不确定为什么tshark用反斜杠来逃避双引号,但根据RFC 4180,它们应引用双引号:
“字段中的(双)引号字符必须用两个表示 (双)引用字符。“
BigQuery很乐意以这种方式摄取转义的报价:
有没有办法告诉tshark如何正确地逃避CSV?否则我敢打赌,如果引用RFC标准,它将是一个受欢迎的补丁。此外,如果有必要,这个备用转义机制可以实现为BigQuery功能(我猜这个问题中的投票可以作为衡量它需要多少的指标)。