我有一个带标头的csv文件 col1,col2,col3
我在Vertica也有桌子 v_col1,v_col2,v_col3
我如何将数据从CSV文件复制并映射到表中(平均col1-> v_col1,col2-> v_col2等...)
谢谢
答案 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)