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

Mogdb 3.0导入与导出

原创 2020 2022-09-01
1485

1.数据导入

导入方式 说明
insert 通过INSERT语句插入一行或多行数据,及从指定表插入数据。
COPY 通过COPY FROM STDIN语句直接向MogDB数据库写入数据。
\copy 与直接使用SQL语句COPY不同,该命令读取/写入的文件只能是gsql客户端所在机器上的本地文件。\COPY只适合小批量、格式良好的数据导入,不会对非法字符做预处理,也无容错能力,无法适用于含有异常数据的场景。导入数据应优先选择COPY。

(1)insert导入

--即向表中插入数据
MogDB=# create table a(id int);
CREATE TABLE
MogDB=# insert into a values(1);
INSERT 0 1
MogDB=# insert into a values(2);
INSERT 0 1
MogDB=# insert into a values(3);
INSERT 0 1

(2)copy导入

copy命令可以操作的文件类型有:txt、sql、csv、二进制格式。

COPY FROM从一个文件拷贝数据到一个表,COPY TO把一个表的数据拷贝到一个文件。
copy 表名 to 文件名  --将表中的数据拷贝到某个文件中
例:
MogDB=#   copy a to '/home/omm/a.txt'
MogDB-# ;
COPY 3
MogDB=# \q
[omm@node1 ~]$ cat a.txt
1
2
3
例:
copy 表名 from 文件名 --从文件中拷贝数据到表中
MogDB=# create table b(id int);
CREATE TABLE
MogDB=# copy b from '/home/omm/a.txt';
COPY 3
MogDB=# select * from b;
 id
----
  1
  2
  3
(3 rows)

(3)\copy导入

\copy用法和copy类似,copy是可以在远端操作数据文件,\copy只能在本地的客户端操作。copy命令只有超级用户能使用,\copy命令一般用户就能操作。从性能上copy命令导入导出大数据文件比\copy的性能都要高。

2.数据导出

MogDB提供的gs_dump和gs_dumpall工具,能够帮助用户导出需要的数据库对象或其相关信息。通过导入工具将导出的数据信息导入至需要的数据库,可以完成数据库信息的迁移

(1)gs_dump用法

常见参数说明
-f 将输出发送至指定文件或目录
-U 指定所连接主机的用户名。
-p 指定主机端口
-F 选择输出格式。

—执行gs_dump,导出postgres数据库全量信息,导出的db_backup.sql文件格式为纯文本格式。

[omm@node1 ~]$ gs_dump -U omm -f /home/omm/bak/db_backup.sql -p 26000 postgres -F p
gs_dump[port='26000'][postgres][2022-08-31 22:46:05]: The total objects number is 417.
gs_dump[port='26000'][postgres][2022-08-31 22:46:05]: [100.00%] 417 objects have been dumped.
gs_dump[port='26000'][postgres][2022-08-31 22:46:05]: dump database postgres successfully
gs_dump[port='26000'][postgres][2022-08-31 22:46:05]: total time: 2223  ms
[omm@node1 ~]$ cd bak/
[omm@node1 bak]$ ls
backups  db_backup.sql  wal
[omm@node1 bak]$ cat db_backup.sql
--
-- openGauss database dump
--
SET statement_timeout = 0;
SET xmloption = content;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;
--
-- Name: postgres; Type: COMMENT; Schema: -; Owner: omm
--
COMMENT ON DATABASE postgres IS 'default administrative connection database';
--
-- Name: test_usr; Type: SCHEMA; Schema: -; Owner: test_usr
--
CREATE SCHEMA test_usr;
.......
---恢复

执行gsql程序,使用如下选项导入由gs_dump/gs_dumpall生成导出文件夹(纯文本格式)的db_backup.sql文件到test数据库。
MogDB=# CREATE DATABASE test;
CREATE DATABASE
MogDB=#
MogDB=#
MogDB=# \q
[omm@node1 bak]$ gsql -d test -p 26000 -f /home/omm/bak/db_backup.sql
SET
SET
SET
SET
SET
SET
COMMENT
CREATE SCHEMA
ALTER SCHEMA
SET
SET
SET
CREATE TABLE
ALTER TABLE
CREATE TABLE
ALTER TABLE
REVOKE
REVOKE
GRANT
GRANT
total time: 15  ms
[omm@node1 bak]$ gsql -d test -p26000 -r
gsql ((MogDB 3.0.1 build 1a363ea9) compiled at 2022-08-05 17:31:04 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
test=# \d
                        List of relations
 Schema | Name | Type  | Owner |             Storage
--------+------+-------+-------+----------------------------------
 public | a    | table | omm   | {orientation=row,compression=no}
 public | b    | table | omm   | {orientation=row,compression=no}
(2 rows)

—只导出表

[omm@node1 bak]$ gs_dump -p 26000 postgres -t a -f  /home/omm/bak/a.sql
gs_dump[port='26000'][postgres][2022-08-31 22:57:25]: The total objects number is 402.
gs_dump[port='26000'][postgres][2022-08-31 22:57:25]: [100.00%] 402 objects have been dumped.
gs_dump[port='26000'][postgres][2022-08-31 22:57:25]: dump database postgres successfully
gs_dump[port='26000'][postgres][2022-08-31 22:57:25]: total time: 1771  ms
[omm@node1 bak]$ cat a.sql
--
-- openGauss database dump
--
SET statement_timeout = 0;
SET xmloption = content;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET search_path = public;
SET default_tablespace = '';
SET default_with_oids = false;
--
-- Name: a; Type: TABLE; Schema: public; Owner: omm; Tablespace:
--
CREATE TABLE a (
    id integer
)
WITH (orientation=row, compression=no);
ALTER TABLE public.a OWNER TO omm;
--
-- Data for Name: a; Type: TABLE DATA; Schema: public; Owner: omm
--
COPY a (id) FROM stdin;
1
2
3
\.
;

--
-- openGauss database dump complete
--
---导入表
[omm@node1 bak]$ gsql -p26000 test -f  /home/omm/bak/a.sql
SET
SET
SET
SET
SET
SET
SET
SET
SET
CREATE TABLE
ALTER TABLE
total time: 7  ms
[omm@node1 bak]$ gsql -dtest -p26000 -r
test=# select * from a;
 id
----
  1
  2
  3
(3 rows)
最后修改时间:2022-09-01 15:10:52
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论