vertica - 如何从弹性表中复制数据
问题描述
我有一个巨大的 CSV 文件,我将它加载到 Flex Table 中,该 csv 包含的列比需要的多。现在我想将数据从 flex 表复制到我的常规表(包括映射列)。我尝试了“插入选择”,但出现了一些关于 cast 的错误,因此我尝试运行 Vertica 不支持的插入忽略。就我而言,我不在乎丢失消息。我想过用被拒绝的表写副本,但我找不到正确的语法。谢谢
解决方案
您需要在弹性表中具体化您想要的列。因此,当您运行该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
推荐阅读
- php - 获取最大值和最小值,如果值相同,则只打印一个值,Laravel Blade
- flutter - 创建始终固定在底部的文本输入栏
- python - 在python中用字典键替换值
- javascript - 图像交换 - 未捕获的类型错误:无法将属性“src”设置为 null
- c++ - 有人可以为我解释一下 C++ 代码吗?
- server - 有没有办法通过pid在HP-UX中获取环境变量
- php - PHP准备语句从SQL数据库查询(GET)数据并在while循环中发布在网页上?
- python - 如何在 Kivy 中将纹理绑定到 3D 网格?
- mysql - SQL 查询最小化器:CREATE + ALTER => CREATE
- javascript - 在 asp.net 内容页面和转发器控件中使用 jquery 日期时间选择器