如何从 csv 文件创建 table 定义并同时复制数据

how to create table definition from csv file and also copy data at the same time

我想将数据从 csv 文件加载到 Vertica。我不想在两个单独的步骤中 create tablecopy 数据。相反,我想创建 table,指定 csv 文件,然后让 vertica 自己找出列定义(名称、数据类型),然后加载数据。

类似于create table titanic_train () as COPY FROM '/data/train.csv' PARSER fcsvparser() rejected data as table titanic_train_rejected abort on error no commit;

可能吗?

我想如果 table 有 100 列,那么自动创建 table、列定义和数据复制将比单独执行这些步骤 easier/faster 多 [=17] =]

无论如何都是好几步。

  1. 使用 Vertica 的内置位:
CREATE FLEX TABLE foo();
COPY foo FROM '/data/mycsvs/foo.csv' PARSER fCsvParser();
SELECT COMPUTE_FLEXTABLE_KEYS_AND_BUILD_VIEW('foo');
-- THEN, either:
SELECT * FROM foo_view;
-- OR: create a ROS Table:
CREATE TABLE foo_ros AS SELECT * FROM foo_view;
  1. 从网上获取一个 CSV 到 DDL 的解析器,例如 https://github.com/marco-the-sane/d2l,然后安装它:
$ d2l -coldelcomma -chardelquote -drp -copy /data/mycsvs/foo.csv | vsql

因此,在第二种情况下,这是一步,但它同时调用了 d2lvsql