用逗号在引号内为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):

使用默认的内置SerDesROW FORMAT DELIMITEDFIELDS TERMINATED BY 等属性 用ROW FORMAT SERDEWITH SERDEPROPERTIES 显式指定一个SerDe

我认为不可能使用内置的 SerDes 指定引号参数。

可以使用org.apache.hadoop.hive.serde2.OpenCSVSerde 指定它们(look here 了解其属性的详细信息),但请注意它存在已知问题,如this SO question 中所述。

现在是 Metillion

我从未使用过 Matillion,但查看他们的 Redshift External Table documentation page,似乎只能指定 FORMATFIELD TERMINATOR,但不能指定 SerDe 及其属性,因此不可能为外部表指定 引用参数 - 除非有一些未记录的方法来指定自定义 SerDe

个人笔记: 我们在摄取存储为 CSV 的数据时遇到了很多问题,我们基本上尽量避免它。 CSV 没有标准,每个工具都实现了自己的支持版本,很难说服所有工具以相同的方式查看数据。

【讨论】:

以上是关于用逗号在引号内为csv文件创建质谱表的主要内容,如果未能解决你的问题,请参考以下文章

从 CSV 文件(逗号分隔)创建 postgres 外部表,该文件有一个电子邮件列,其中多个电子邮件地址用逗号分隔

python 我发现Crystal Reports创建的CSV文件具有双引号字段,其中一些字段在引号之间包含逗号。我们不想

创建方便的csv格式文件

hive导入csv文件,字段中双引号内有逗号

如何在greenplum的报价字段中使用逗号从csv文件创建外部表?

C#获取CSV文件内容对逗号和引号分隔的处理