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進行舉報,并提供相關證據,一經查實,墨天輪將立刻刪除相關內容。




