暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8s导入最佳实践

淮海路小佩奇 2023-05-22
210

使用 COPY 命令导入数据

COPY 命令从本地或其它数据库的多个数据源并行导入数据。COPY 导入大量数据的效率要比 INSERT 语句高很多,而且存储数据也更有效率。

有关如何使用 COPY 命令的更多信息,请参阅 9.2 使用 COPY FROM STDIN 导入数据。

使用 gsql 元命令导入数据

\copy 命令在任何 psql 客户端登录数据库成功后可以执行导入数据。与 COPY 命令相比较,\copy 命令不是读取或写入指定文件的服务器,而是直接读取或写入文件。

这个操作不如 COPY 命令有效,因为所有的数据必须通过客户端/服务器的连接来传递。

对于大量的数据来说 COPY 命令可能会更好。有关如何使用\copy 命令的更多信息,请参阅 9.3 使用 gsql 元命令导入数据。

\COPY 只适合小批量,格式良好的数据导入,不会对非法字符做预处理,也无容错能力,无法适用于含有异常数据的场景。导入数据应优先选择 COPY

使用 INSERT 多行插入

插入如果不能使用 copy 命令,而您需要进行 sql 插入,可以根据情况使用多行插入。如果您使用的是列存表,一次只插入一行或几行,则数据压缩效率低下。

多行插入是通过批量进行一系列插入而提高性能。下面的示例使用一条 insert 语句向一个三列表插入三行。

这仍属于少量插入,只是用来说明多行插入的语法。创建表的步骤请参考 3.6-创建和管理表。

向表 customer_t1 中插入多行数据:

gbase=# insert into customer_t1 values (68, 'a1', 'zhou','wang'),

(43, 'b1', 'wu', 'zhao'),

(95, 'c1', 'zheng', 'qian');

有关更多详情和示例,请参阅《GBase 8s V8.8_SQL 手册》 INSERT。

使用 INSERT 批量插入

带 SELECT 子句使用批量插入操作来实现高性能数据插入。

如果需要将数据或数据子集从一个表移动到另一个表,可以使用《GBase 8s V8.8_SQL手册》 INSERT 和 CREATE TABLE AS 命令。

如果从指定表插入数据到当前表,例如在数据库中创建了一个表 customer_t1 的备份表customer_t2,现在需要将表 customer_t1 中的数据插入到表 customer_t2 中,则可以执行如下命令。

上面的示例等价于:


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论