【发布时间】:2012-09-07 06:09:11
【问题描述】:
在下面给出的示例中,最后一行没有上传。我收到一个错误:
Data between close double quote (") and field separator:
这看起来像一个错误,因为管道符号之间的所有数据都应该被视为一个字段。
架构:一:串,二:串,三:串,四:串
上传文件:
This | is | test only | to check quotes
second | line | "with quotes" | no text
third line | with | "start quote" and | a word after quotes
处理上面的第一行和第二行。但不是第三个。
更新:
有人可以解释为什么以下工作除了第三行?
This | is | test only | to check quotes
second | line | "with quotes" | no text
third line | with | "start quote" and | a word after quotes
forth line | enclosed | {"GPRS","MCC_DETECTED":false,"MNC_DETECTED":false} | how does this work?
fifth line | with | {"start quote"} and | a word after quotes
对此可能有一些奇特的解释。从最终用户的角度来看,这是荒谬的。
【问题讨论】:
-
我刚刚尝试了您的更新,您提供的示例实际上不起作用。与大多数 CSV 解析应用程序一样,BigQuery 默认情况下将双引号(“)视为字段封闭字符。第 3 行未正确转义(请参阅下面的答案)并且摄取将引发错误。您的选择是: 1. 更改“configuration.load.quote”参数在你的摄取请求中对双引号以外的东西(一个没有出现在你的数据中的字符)。2.按照下面的建议转义你的数据......例如,Python的csv类就是这样做的自动。
-
虽然考虑将“configuration.load.quote”设置为 NULL 之类的操作可能有好处,但我认为在工作时使用分隔符和字段封闭字符非常明确是很重要的包含大量 CSV 数据。它有助于捕获基础数据中的错误,并确保您提取的数据有效。
-
尝试通过 Cloud SQL 作为替代方案:medium.com/google-cloud/…
标签: google-bigquery