发布于

常用的语句 导入导出

经过四次培训的学习,受益良多,了解的偶数的文化,以及前景发展。
下面是我自己测试使用时的一些总结,可能理解不到位,希望老师们给与指点。

日期转换总结
select last_day('20230329':: date);--月末
select trunc('20230329':: date,'mm');--年初
select trunc('20230329':: date,'yy');--本年初
select trunc('20230329':: date,'q');--本季度第一天
select trunc('20230329':: date,'ww');--上周日
select add_months('20230329':: date,12);--同期

定义外部表
说明:可以使用下面的命令创建外部表。其中需要把 etlhost-1 替换为 gpfdist 所在机器的主机名。本机的可以使用 localhost。
可以直接查询该外部表:

CREATE EXTERNAL TABLE ext_expenses( name text, date date, amount float4, category text, desc1 text )
LOCATION ('gpfdist://etlhost-1:8081/', 'gpfdist://etlhost-1:8082/')
FORMAT 'TEXT' (DELIMITER '|');
查询外表看是否创建成功
etl=# select * from ext_expenses;

----将已卸载的文件导入偶数库中--------
删除外表
drop external table ext_表名
按照已有库表创建外表
create writable external table ext_表名(like 导入库中已有表名)location('gpfdist://数据文件服务 IP:导入端口/数据文件名')format 'text' (DELIMITER '分隔符' null '');
删除
delete from 表名 where partition_dt=日期;
插入数据
insert into 表名 select * from ext_表名 where partition_dt=日期;
查询是否插入成功
select * from 表名 where partition_dt=日期;

----将偶数表卸数到指定服务器数据文件-------------------------------
echo "
--删除外表
drop external table ext_表名
--按照已有库表创建外表
create writable external table ext_表名(like 导出库中已有表名)location('gpfdist://数据文件服务 IP:卸载端口/数据文件名')format 'text' (DELIMITER '分隔符' null '');
insert into ext_表名 select * from 表名 where partition_dt=日期;">unload_表名
chmod 755 unload_表名
psql -d 实例名 -h IP 地址 -U 用户名 -Aft -f unload_表名

----使用 COPY 命令导入导出数据 -------------------------------

copy 命令在 master 节点上,可以通过串行操作来完成少量的数据导入和导出。在 copy 命令运行时可以
让服务器直接读写文件,因此必须让当前用户拥有文件的访问权限。

copy to 命令用于拷贝表内容至文件,copy from 命令用于拷贝文件的数据到数据表。
在使用 copy to 命令时,除了拷贝整个表内容,也可以拷贝 select 的查询结果;也就说,如果 select 后面
列出部分字段,则 copy to 命令仅拷贝指定字段的结果至文件。准备使用 copy to 命令的表必须授予

select 权限。该命令仅能在表上使用,不能用于视图;当我们需要拷贝视图内容时,可以给 copy 命令传
入 SQL 查询:

COPY (SELECT * FROM country) TO ‘list_countries.copy’;

-------------使用 COPY 命令导入导出数据---------------------------

copy 命令在 master 节点上,可以通过串行操作来完成少量的数据导入和导出。在 copy 命令运行时可以
让服务器直接读写文件,因此必须让当前用户拥有文件的访问权限。

copy to 命令用于拷贝表内容至文件,copy from 命令用于拷贝文件的数据到数据表。
在使用 copy to 命令时,除了拷贝整个表内容,也可以拷贝 select 的查询结果;也就说,如果 select 后面
列出部分字段,则 copy to 命令仅拷贝指定字段的结果至文件。准备使用 copy to 命令的表必须授予

select 权限。该命令仅能在表上使用,不能用于视图;当我们需要拷贝视图内容时,可以给 copy 命令传
入 SQL 查询:

COPY (SELECT * FROM country) TO ‘list_countries.copy’;

评论
    test