Скопируйте CSV в Vertica - PullRequest
       15

Скопируйте CSV в Vertica

0 голосов
/ 25 июня 2019

У меня есть CSV-файл с заголовками col1, col2, col3

У меня также есть таблица в Vertica v_col1, v_col2, v_col3

Как я могу копировать и отображать данные из файла CSV вмоя таблица (имеется в виду col1 -> v_col1, col2 -> v_col2 и т. д.)

Спасибо

1 Ответ

0 голосов
/ 26 июня 2019

Команда COPY в Vertica сама сопоставит столбцы 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)

Дополнительные примеры копирования см. в приведенном ниже документе: https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/SQLReferenceManual/Statements/COPY/COPYExamples.htm

(Изменить в комментариях) IУ меня нет ответа на требование «отображения», но я думаю, что есть обходной путь для достижения этого.

После того, как файл csv был скопирован в таблицу с тем же числом столбцов, вы можете создать новую таблицу, выбрав нужные столбцы.

Например, вы можете создать новую таблицу (с именем table2), в которой есть только первые 2 столбца из 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)
...