日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

linux系統下oracle數據庫的導入導出

作者:lichuanjai 更新時間: 2022-09-25 編程語言

ORACLE數據庫數據泵的導入導出_lichuanjai的博客-CSDN博客

因為之前寫過在windows下oracle數據庫的導入導出,里面寫的已經很詳細了,各個參數都做了介紹,所以這里就不多說了。想了解的人可以去我上面的博客深入了解,上面的博客介紹的是數據泵的導入導出,還有一篇是spool緩沖池導出數據和sqlldr工具導入數據,可以去我的博客看看。

因為在linux系統下oracle數據庫的導入導出與在windows下oracle數據庫的導入導出除了路徑不同外,別的都是一樣的。所以我就直接上代碼了:

一.數據泵的導入導出

不論是在windows下用數據泵導入導出數據,還是在linux下用數據泵導入導出數據,其過程都是一樣的,都要先創建路徑,給用戶讀取路徑的權限,最好再給該用戶DBA的權限

1.創建路徑

CREATE OR REPLACE DIRECTORY ora_1 AS '/u01/app/oracle/data';

注:在linux下是不分盤的,所以實際路徑可以自己選擇,但需要在安裝oracle數據庫的用戶下,我是新建了一個oracle用戶用來安裝數據庫,一會執行命令也需要在該用戶下執行。

2.賦權限(讀寫路徑的權限和DBA的權限給該用戶,我是scott用戶)

grant read,write on directory ora_1 to scott;

grant dba to scott;

注:給scott賦權限需要進入管理員用戶下才行,在linux系統下登錄數據庫與windows一般,不過在linux系統里每次開啟系統都要打開oracle數據庫的監聽程序,如果不是在主用戶下安裝數據庫的,還需要切換用戶才行

su - oracle? ? ? ? ? ? ? ? ? ? #切換用戶(我是安裝在oracle用戶下)

lsnrctl start? ? ? ? ? ? ? ? ? #啟動監聽程序

sqlplus / as sysdba? ? #連接數據庫

startup? ? ? ? ? ? ? ? ? ? ? ? ?#啟動數據庫? (這一步之后進入的就是管理員用戶,可以給普通用戶賦權限)

conn scott/scott? ? ? ? ?#連接scott用戶

3.expdp 導出數據 (在安裝了oracle數據庫的用戶下執行)

expdp scott/scott directory=ora_1 dumpfile=emp.dmp logfile=emp.log tables=emp

4.impdp 導入數據? (在安裝了oracle數據庫的用戶下執行,導入時可以先把表刪了)

impdp scott/scott directory=ora_1 dumpfile=emp.dmp logfile=emp.log tables=emp

二.spool緩沖池的導出與sqlldr工具導入

spool緩沖池的導出需要寫一個.sql腳本調用來導出數據,導出的是數據,這和數據泵導出的是亂碼不同。

1.spool緩沖池導出.sql腳本

set trimspool on?
set trimout on?
set echo off?
set newpage none?
set feedback off?
set linesize 200?
set pagesize 0?
set heading off?
set term off?
set timing off?
SPOOL /u01/app/oracle/data/emp.dat
SELECT EMPNO||'|'||ENAME||'|'||JOB||'|'||MGR||'|'||TO_CHAR(HIREDATE,'YYYY-MM-DD')||'|'||SAL||'|'||COMM||'|'||DEPTNO FROM EMP;
spool off

注:可以直接在linux上vim創建并編輯文件

進入該路徑下

cd /u01/app/oracle/data

編輯腳本

vim emp.sql

2.調用腳本emp.sql

SQL> @/u01/app/oracle/data/emp.sql

注:這是.sql腳本,需要進入sql下執行。(到這,導出數據成功)

3.sqlldr工具導入數據

注:使用sqlldr導入數據,也與在windows下一般,需要一個數據文件,一個控制文件,像日志文件和錯誤文件在執行過程會自動生成。現在我們來編寫控制文件emp.ctl

與編寫腳本文件一樣,直接在/u01/app/oracle/data下 vim emp.ctl 就行

options (skip=0,rows=1000)
load data
characterset ZHS16GBK
INTO TABLE EMP
TRUNCATE
FIELDS TERMINATED BY '|'
TRAILING NULLCOLS
(EMPNO "TRIM(:EMPNO)",
?ENAME ?"TRIM(:ENAME)",
?JOB ? ? ? "TRIM(:JOB)",
MGR ? ? ?"TRIM(:MGR)",
HIREDATE "TO_DATE(TRIM(:HIREDATE),'YYYYMMDD')",
SAL ? ? ? "Trim(:sal)",
COMM ?"TRIM(:COMM)",
DEPTNO "TRIM(:DEPTNO)"
)

4.執行sqlldr命令,導入數據

sqlldr scott/scott@orcl data=/u01/app/oracle/data/emp.dat control=/u01/app/oracle/data/emp.ctl log=/u01/app/oracle/data/emp.log bad=/u01/app/oracle/data/emp.bad errors=0

注:到這里就導入成功了。有不懂的可以留言問我,我會一定回答。

代碼:(很簡單是不是)

--在linux系統下導入導出數據
--數據泵導入導出
--先要準備
--1.創建路徑 ?SELECT * FROM DBA_DIRECTORIES; drop directory dir_1;--查看所有路徑
CREATE OR REPLACE DIRECTORY ora_1 AS '/u01/app/oracle/data';
--2.賦權限,讀寫路徑的權限和DBA權限
GRANT READ,WRITE ON DIRECTORY ora_1 TO SCOTT;
GRANT DBA TO SCOTT;
--3.EXPDP導出數據(在命令行執行)
expdp scott/scott directory=ora_1 dumpfile=emp.dmp logfile=emp.log tables=emp
--4.impdp導入數據
impdp scott/scott directory=ora_1 dumpfile=emp.dmp logfile=emp.log tables=emp

--緩沖池spool導出數據
--.sql腳本編寫
set trimspool on?
set trimout on?
set echo off?
set newpage none?
set feedback off?
set linesize 200?
set pagesize 0?
set heading off?
set term off?
set timing off?
SPOOL /u01/app/oracle/data/emp.dat
SELECT EMPNO||'|'||ENAME||'|'||JOB||'|'||MGR||'|'||TO_CHAR(HIREDATE,'YYYY-MM-DD')||'|'||SAL||'|'||COMM||'|'||DEPTNO FROM EMP;
spool off
--執行命令(在sql> ? ?處執行)
SQL>@/u01/app/oracle/data/emp.sql
--sqlldr工具導入數據
--需要編寫一個控制文件(emp87.ctl)
options (skip=0,rows=1000)
load data
characterset ZHS16GBK
INTO TABLE EMP
TRUNCATE
FIELDS TERMINATED BY '|'
TRAILING NULLCOLS
(EMPNO "TRIM(:EMPNO)",
?ENAME ?"TRIM(:ENAME)",
?JOB ? ? ? "TRIM(:JOB)",
MGR ? ? ?"TRIM(:MGR)",
HIREDATE "TO_DATE(TRIM(:HIREDATE),'YYYYMMDD')",
SAL ? ? ? "Trim(:sal)",
COMM ?"TRIM(:COMM)",
DEPTNO "TRIM(:DEPTNO)"
)
--sqlldr執行命令導入數據
sqlldr scott/scott@orcl data=/u01/app/oracle/data/emp.dat control=/u01/app/oracle/data/emp.ctl log=/u01/app/oracle/data/emp.log bad=/u01/app/oracle/data/emp.bad errors=0

?

原文鏈接:https://blog.csdn.net/lxslf/article/details/127003378

欄目分類
最近更新