【openGauss数据库】--运维指南04--数据导入

【openGauss数据库】--运维指南04--数据导入

    • 一、openGauss导入数据
      • 1.1 概述
      • 1.2 INSERT语句写入数据
      • 1.3 gsql元命令导入数据
      • 1.4 使用gs_restore命令、gsql命令导入数据(`主要`)
    • 二、总结—温故知新


【上一篇】
The Begin 点点关注,收藏不迷路
【下一篇】

一、openGauss导入数据

1.1 概述

openGauss数据库提供了灵活的数据入库方式:INSERTCOPY以及gsql元命令\copy。各方式具有不同的特点。

【openGauss数据库】--运维指南04--数据导入_第1张图片

1.2 INSERT语句写入数据

INSERT是最简单的一种数据写入方式,这种方式适合数据写入量不大,并发度不高的场景。

###如:插入单条数据###
INSERT INTO customer_t1(c_customer_sk, c_customer_id, c_first_name) VALUES (3769, 'hello', 'Grace');

###如:插入多条数据###
INSERT INTO customer_t1 (c_customer_sk, c_customer_id, c_first_name) VALUES 
    (6885, 'maps', 'Joes'),
    (4321, 'tpcds', 'Lily'),
    (9527, 'world', 'James');

1.3 gsql元命令导入数据

gsql工具提供了元命令\copy进行数据导入。

该命令读取/写入的文件是本地文件,而非数据库服务器端文件;所以,要操作的文件的可访问性、权限等,都是受限于本地用户的权限。

  • 说明:

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

###1、创建目标表t_a。
CREATE TABLE t_a(a int);

###2、从stdin拷贝数据到目标表t_a。出现>>符号提示时,输入数据,输入\.时结束。
db_test01=# \copy t_a from stdin;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> 1
>> 2
>> 3
>> 4
>> 5
>> 6
>> 7
>> 8
>> 9
>> 10
>> \.
db_test01=# 


###2、查询导入目标表t_a的数据。
db_test01=# SELECT * FROM t_a;
 a  
----
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
(10 rows)

db_test01=# 

1.4 使用gs_restore命令、gsql命令导入数据(主要

gs_restore是openGauss数据库提供的与gs_dump配套的导入工具。通过该工具,可将gs_dump导出的文件导入至数据库。gs_restore支持导入的文件格式包含自定义归档格式、目录归档格式和tar归档格式。

  • gs_restore具备如下两种功能:

1、导入至数据库

如果指定了数据库,则数据将被导入到指定的数据库中。其中,并行导入必须指定连接数据库的密码。导入时生成列会自动更新,并像普通列一样保存。

2、导入至脚本文件

如果未指定导入数据库,则创建包含重建数据库所需的SQL语句脚本,并将其写入至文件或者标准输出。该脚本文件等效于gs_dump导出的纯文本格式文件。

gs_restore工具在导入时,允许用户选择需要导入的内容,并支持在数据导入前对等待导入的内容进行排序。

  • 说明:

gs_restore默认是以追加的方式进行数据导入。为避免多次导入造成数据异常,在进行导入时,建议选择使用“-c”和“-e”参数。“-c”表示在重新创建数据库对象前,清理(删除)已存在于将要还原的数据库中的数据库对象;“-e”表示当发送SQL语句到数据库时如果出现错误请退出,默认状态下会继续,且在导入后会显示一系列错误信息。
【openGauss数据库】--运维指南04--数据导入_第2张图片

  • 恢复步骤:

1、以操作系统用户omm登录数据库主节点。
[root@klgdj ~]$ su - omm
     
2、执行gs_restore,导入指定db_test01_backup.dmp文件tar归档格式)中db_test01数据库的数据和对象定义。
[omm@klgdj back_up]$ gs_restore -U omm /home/omm/back_up/db_test01_backup.tar -p 15400 -d backup_db_test01
start restore operation …
table smbh_bhcfg_bc_b complete data imported !
table smbh_bhcfg_bc_bp complete data imported !
table smbh_bhcfg_bh_info complete data imported !
table t_area complete data imported !
table t_config complete data imported !
table t_xmjbxx_info complete data imported !
table t_dept complete data imported !
table t_user complete data imported !
table t_user_02 complete data imported !
table t_config complete data imported !
Finish reading 92 SQL statements!
end restore operation …
restore operation successful
total time: 694 ms
[omm@klgdj back_up]$
【openGauss数据库】--运维指南04--数据导入_第3张图片
   
或者以追加的方式进行数据导入
[omm@klgdj back_up]$ gs_restore -U omm /home/omm/back_up/db_test01_backup.tar -p 15400 -d db_test01
   
3、执行gs_restore,导入指定db_test01_backup.dmp文件(自定义归档格式)中db_test01数据库的数据和对象定义。
[omm@klgdj back_up]$ gs_restore -U omm /home/omm/back_up/db_test01_backup.dmp -p 15400 -d db_test01
   
4、执行gs_restore,导入指定db_test01_backup目录文件(目录归档格式)中db_test01数据库的数据和对象定义。
[omm@klgdj back_up]$ gs_restore -U omm /home/omm/back_up/db_test01_backup -p 15400 -d db_test01

5、执行gs_restore,将db_test01数据库的所有对象的定义导入至backupdb数据库。导入前,数据库存在完整的定义和数据,导入后,backupdb数据库只存在所有对象定义,表没有数据。
[omm@klgdj back_up]$ gs_restore /home/omm/back_up/db_test01_backup.tar -p 15400 -d backup_db_test01 -s -e -c

6、执行gsql程序,使用如下选项导入由gs_dump/gs_dumpall生成导出文件夹(纯文本格式)的db_test01_backup.sql文件到db_test01 数据库。
[omm@klgdj back_up]$ gsql -d db_test01 -p 15400 -W omm@klgdj#2023 -f /home/omm/back_up/db_test01_backup.sql
SET
SET
SET
SET
SET
SET
SET
gsql:/home/omm/back_up/db_test01_backup.sql:17: ERROR: schema “db_test01” already exists
ALTER SCHEMA
gsql:/home/omm/back_up/db_test01_backup.sql:26: ERROR: schema “test” already exists
ALTER SCHEMA
gsql:/home/omm/back_up/db_test01_backup.sql:35: ERROR: schema “zyl01” already exists
ALTER SCHEMA
SET
gsql:/home/omm/back_up/db_test01_backup.sql:50: ERROR: function “insert_data” already exists with same argument types
ALTER FUNCTION
gsql:/home/omm/back_up/db_test01_backup.sql:67: ERROR: function “tri_insert_func” already exists with same argument types
ALTER FUNCTION
SET
SET
SET
gsql:/home/omm/back_up/db_test01_backup.sql:94: ERROR: relation “smbh_bhcfg_bc_b” already exists in schema “db_test01”
DETAIL: creating new table with existing name in the same schema
ALTER TABLE
。。。。。。。

二、总结—温故知新

❓ 该章详细介绍了openGauss数据库使用gs_restore命令、gsql命令导入备份数据。

【上一篇】
The End 点点关注,收藏不迷路
【下一篇】

你可能感兴趣的:(数据库--openGauss,数据库,运维,openGauss,gs_restore,gsql)