将CSV复制到Vertica

时间:2019-06-25 12:22:27

标签: csv vertica

我有一个带标头的csv文件 col1,col2,col3

我在Vertica也有桌子 v_col1,v_col2,v_col3

我如何将数据从CSV文件复制并映射到表中(平均col1-> v_col1,col2-> v_col2等...)

谢谢

1 个答案:

答案 0 :(得分:0)

Vertica中的COPY命令将CSV列本身映射到表中。

假设csv文件/tmp/t1.csv如下所示:

col1,col2,col3
1,100,a
2,200,b
3,300,c

然后,您可以在Vertica中创建一个表并将COPY与DELIMITER','结合使用:

=> create table table1(v_col1 int, v_col2 int, v_col3 varchar);
CREATE TABLE
=> copy table1 from '/tmp/t1.csv' delimiter ',';
 Rows Loaded
-------------
           3
=> select * from table1;
 v_col1 | v_col2 | v_col3
--------+--------+--------
      1 |    100 | a
      2 |    200 | b
      3 |    300 | c
(3 rows)

有关更多COPY示例,请参阅以下文档: https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/SQLReferenceManual/Statements/COPY/COPYExamples.htm

(编辑评论) 对于“映射”要求,我没有答案,但是我认为有一种解决方法可以实现。

将csv文件复制到具有相同列数的表中之后,可以通过选择所需的列来创建新表。

例如,您可以创建一个新表(名为table2),该表仅包含table1的前两列:

=> create table table2 as select v_col1,v_col2 from table1;
CREATE TABLE
=> select * from table2;
 v_col1 | v_col2
--------+--------
      2 |    200
      1 |    100
      3 |    300
(3 rows)