【问题标题】:Csv parser - Evaluate header for each fileCsv 解析器 - 评估每个文件的标头
【发布时间】:2016-08-23 09:10:26
【问题描述】:

我在一个目录中有多个 CSV 文件。它们可能有不同的列组合,但我想用一个命令将它们全部复制,因为它们有很多而且它们都进入同一个表。但是 FDelimitedParser 只评估第一个文件的标题行,然后拒绝所有不适合的行 - 即。大多数其他文件的所有行。我一直在使用 FDelimitedParser,但其他一切都很好。

1 - 这是预期的行为,如果是,为什么?

2 - 我希望它评估每个文件的标题,有没有办法?

谢谢

(Vertica 7.2)

【问题讨论】:

  • 所以你有多个来源并且你试图将它们全部加载到同一个目标中?你能解释得更好吗?
  • 我的表有一组已定义的列。文件中的列是该集合的子集,但每个文件可以有不同的子集,并且目录中可以共存数十种不同的组合。
  • 好的,但是您有数据/文件登陆区域中任何文件的目标表?正确的 !每个带有数据的 csv/txt 文件都有标题?!
  • 对不起,关于目标表和登陆区域的问题我不明白,你能重新表述一下吗?是的,每个 csv 文件都有标题。
  • 你有一个带有 (col1,col2,col3) 的文件*,还有一个带有 (col1,col2,col3) 的表格,还有一个带有 (col1) 的文件 (col1) 和表格。对于登陆区域中的每种类型的文件,您都会有一个与之对应的表格!这是真的吗?

标签: csv parsing header copy vertica


【解决方案1】:

【讨论】:

  • 也许我误解了,但我认为当模式未知和/或必须将列添加到表中时使用弹性表。就我而言,列的超集是已知的并已声明 - 我的问题是一次解析多个文件,其中列是我的表列的不同子集。
  • 我的理解是你有弹性输入数据,你可以这样弹性输入到弹性表中,否则你需要普通的csv文件
  • 弹性表将所有内容放入原始列中,按列名标记,然后您要么具体化您想要的内容,要么直接从弹性表访问它(可能更慢更大,因为它不能做列压缩和其他优化)。不过,我认为 OP 正在寻找的是使用标准表并读取列以填充 CSV 文件。
【解决方案2】:

当我需要一次加载一堆文件时,我使用了一个小解决方法。这假设您的所有文件都具有相同的列顺序。

下载并运行Cygwin

导航到包含 csv 文件的文件夹

cd your_folder_name_with_csv_files

将所有 csv 文件合并到一个新文件中

cat *.csv >> new_file_name.csv

从新文件运行copy statement in Vertica。如果文件头有问题,您可以按照 this link 上的说明运行 Cygwin 以删除每个文件的第一行。

【讨论】:

    猜你喜欢
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多