Как скопировать данные из гибкой таблицы - PullRequest
0 голосов
/ 01 июля 2019

У меня есть огромный CSV-файл, который я загрузил в Flex Table, CSV содержит больше столбцов, чем требуется. Теперь я хотел бы скопировать данные из гибкой таблицы в мою обычную таблицу (включая столбцы сопоставления). Я попытался "вставить выбор", но у меня возникла ошибка в отношении приведения, поэтому я попытался запустить вставку игнорировать, которая не поддерживается в Vertica. в моем случае я не забочусь о потерянных сообщениях. Я думал о записи с отклоненной таблицей, но не могу найти правильный синтаксис. Спасибо

1 Ответ

0 голосов
/ 03 июля 2019

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

Предположим, ваши данные выглядят так:

col1,col2,col3,col4,col4
1.2,2019-07-01 10:00:00,1,string 2
1.2,2019-07-01 10:00:00,string 1,string 2

И вас волнует только col1, col2, col3. Где col3 содержит смешанные значения типа int и string.

Создайте гибкую таблицу и загрузите CSV:


CREATE FLEX TABLE flex_table
(
    col1 float,
    col2 timestamp, 
    col3 int
);

COPY public.flex_table FROM '/data/csv/data_june7_15.csv' PARSER fcsvparser();

Затем вы можете вставить данные в свою обычную таблицу из своей гибкой таблицы (нет необходимости в представлении):

CREATE TABLE regular_table
(
    col1 float,
    col2 timestamp,
    col3 int
);

INSERT INTO regular_table (col1, col2, col3) SELECT col1, col2, col3 FROM flex_table;

SELECT * FROM regular_table;
 col1 |        col2         | col3 
------+---------------------+------
  1.2 | 2019-07-01 10:00:00 |     
  1.2 | 2019-07-01 10:00:00 |    1
...