用逗号在引号内为csv文件创建质谱表
Posted
技术标签:
【中文标题】用逗号在引号内为csv文件创建质谱表【英文标题】:Creating spectrum table in matillion for csv file with comma inside quotes 【发布时间】:2020-06-11 18:18:43 【问题描述】:我有一个使用 matillion 在红移中创建光谱表的场景。 我的 CSV 文件数据是这样的:-
column1,column2,column3
abc,"qwety,pqr",xyz
但在频谱表中我看到了数据 作为
column1 column2 column3
abc qwerty pqr
Matillion 没有将引号值作为一个值。 您能否建议如何使用 matillion 的 EXTERNAL TABLE 组件来实现这一点。
【问题讨论】:
【参考方案1】:基本上,您希望为您的 CSV 数据指定一个引用参数。
Redshift 有 2 种指定外部表的方式(参见 Redshift Docs for reference):
使用默认的内置SerDes 和ROW FORMAT DELIMITED
、FIELDS TERMINATED BY
等属性
用ROW FORMAT SERDE
、WITH SERDEPROPERTIES
显式指定一个SerDe
我认为不可能使用内置的 SerDes 指定引号参数。
可以使用org.apache.hadoop.hive.serde2.OpenCSVSerde
指定它们(look here 了解其属性的详细信息),但请注意它存在已知问题,如this SO question 中所述。
现在是 Metillion:
我从未使用过 Matillion,但查看他们的 Redshift External Table documentation page,似乎只能指定 FORMAT
和 FIELD TERMINATOR
,但不能指定 SerDe 及其属性,因此不可能为外部表指定 引用参数 - 除非有一些未记录的方法来指定自定义 SerDe。
个人笔记: 我们在摄取存储为 CSV 的数据时遇到了很多问题,我们基本上尽量避免它。 CSV 没有标准,每个工具都实现了自己的支持版本,很难说服所有工具以相同的方式查看数据。
【讨论】:
以上是关于用逗号在引号内为csv文件创建质谱表的主要内容,如果未能解决你的问题,请参考以下文章
从 CSV 文件(逗号分隔)创建 postgres 外部表,该文件有一个电子邮件列,其中多个电子邮件地址用逗号分隔
python 我发现Crystal Reports创建的CSV文件具有双引号字段,其中一些字段在引号之间包含逗号。我们不想