使用 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 中,则可以执行如下命令。

上面的示例等价于:





