千家信息网

怎么理解PostgreSQL12 COPY和bulkloading有什么特性

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本篇内容主要讲解"怎么理解PostgreSQL12 COPY和bulkloading有什么特性",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么理解Pos
千家信息网最后更新 2025年11月07日怎么理解PostgreSQL12 COPY和bulkloading有什么特性

本篇内容主要讲解"怎么理解PostgreSQL12 COPY和bulkloading有什么特性",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么理解PostgreSQL12 COPY和bulkloading有什么特性"吧!

业务是否依赖COPY命令加载数据?PostgreSQL12提供了一个新特性,大大加快了加载速度。

COPY:Loading and unloading data as fast as possible

细看PostgreSQL12的COPY语法,发现有两处变动:

1)\h 会有手册文档链接

2)COPY支持WHERE条件

下面是完整语法:

db12=# \h COPYCommand:     COPYDescription: copy data between a file and a tableSyntax:COPY table_name [ ( column_name [, ...] ) ]    FROM { 'filename' | PROGRAM 'command' | STDIN }    [ [ WITH ] ( option [, ...] ) ]    [ WHERE condition ]COPY { table_name [ ( column_name [, ...] ) ] | ( query ) }    TO { 'filename' | PROGRAM 'command' | STDOUT }    [ [ WITH ] ( option [, ...] ) ]where option can be one of:    FORMAT format_name    FREEZE [ boolean ]    DELIMITER 'delimiter_character'    NULL 'null_string'    HEADER [ boolean ]    QUOTE 'quote_character'    ESCAPE 'escape_character'    FORCE_QUOTE { ( column_name [, ...] ) | * }    FORCE_NOT_NULL ( column_name [, ...] )    FORCE_NULL ( column_name [, ...] )    ENCODING 'encoding_name'URL: https://www.postgresql.org/docs/12/sql-copy.html

虽然添加文档链接功能带来便利,但是WHERE过滤功能更加有用。这个功能的目的是什么?当前,COPY只能导入整个文件。但是某些场景下会有问题:很多场景下,人们只想加载数据的一个子集,并且在导出前必须编写大量代码进行过滤。

COPY...WHERE: 导入时过滤

PostgreSQL通过该条件可以轻松地进行过滤。下面讲述一个简单的例子:

db12=# CREATE TABLE t_demo AS        SELECT * FROM generate_series(1, 1000) AS id;SELECT 1000

首先先插入1000行数据,然后导出到一个文件:

db12=# COPY t_demo TO '/tmp/file.txt';COPY 1000

最后,再重新导入数据:

db12=# CREATE TABLE t_import (x int);CREATE TABLEdb12=# COPY t_import FROM '/tmp/file.txt' WHERE x < 5;COPY 4db12=# SELECT * FROM t_import; x--- 1 2 3 4(4 rows)

如上说是,过滤数据非常简单直接。需要注意,导出列是"id",导入列是"x"。文件文件不知道导入表的表结构---需要确保过滤导入表的列名。

其他特性

COPY可以将数据发送到UNIX pipe,还可以从pipe中读取数据。如下所示:

db12=# COPY t_demo TO PROGRAM 'gzip -c > /tmp/file.txt.gz';COPY 1000db12=# COPY t_import FROM PROGRAM 'gunzip -c /tmp/file.txt.gz'    WHERE x BETWEEN 100 AND 103;COPY 4db12=# SELECT * FROM t_import WHERE x >= 100;  x  ----- 100 101 102 103(4 rows)

某些场景下,不止想将数据导出。上面场景,我们想导出数据时将数据压缩;导入时将数据解压并过滤。如上所示,这种方法非常简单。

到此,相信大家对"怎么理解PostgreSQL12 COPY和bulkloading有什么特性"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

数据 特性 场景 文件 功能 内容 如上 文档 方法 条件 语法 链接 学习 实用 更深 业务 人们 代码 例子 兴趣 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 贵州捷猫网络技术有限公司 rtmp拉流会增加服务器压力吗 未建立网络安全责任检查考核制度 怎么把建好的数据库变成文件 ssl加密为何还要中转服务器 大二数据库原理与应用答案 学习电脑和网络技术的视频 软件开发做决算评审吗 网络安全主题创意绘画教师a3纸 pyqt数据库控件 构建企业网络安全方案 兴化企蒙软件开发公司 铜梁区一站式网络技术服务是什么 软件开发和服务需要资质吗 软件开发到北京好找工作吗 jsp输出数据库所有用户 大话哪个服务器人多 数据库不同表的主键 国家能源网络安全活动周 金融行业网络安全措施 淘宝数据库系统的筛选查询 什么是ca证书服务器 表结构图 数据库 华为服务器系统 传奇4 服务器维护中 网络安全党课报告 网络安全工程师考试什么 东营染色软件开发报价 百度智能汽车软件开发前途 杭州专业网络安全准入控制系统
0