【openGauss数据库】--运维指南04--数据导入
- 🔻 一、openGauss导入数据
- 🔰 1.1 概述
- 🔰 1.2 INSERT语句写入数据
- 🔰 1.3 gsql元命令导入数据
- 🔰 1.4 使用gs_restore命令、gsql命令导入数据(`主要`)
- 🔻 二、总结—温故知新
👈【上一篇】 | 💖The Begin💖 点点关注,收藏不迷路💖 | 【下一篇】👉 |
🔻 一、openGauss导入数据
🔰 1.1 概述
openGauss数据库提供了灵活的数据入库方式:INSERT
、COPY
以及gsql元命令\copy
。各方式具有不同的特点。
🔰 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
----12345678910
(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语句到数据库时如果出现错误请退出,默认状态下会继续,且在导入后会显示一系列错误信息。
📖 恢复步骤:
🟢 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]$
或者以追加的方式进行数据导入
[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💖 点点关注,收藏不迷路💖 | 【下一篇】👉 |