網站首頁 編程語言 正文
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
相關推薦
- 2022-11-27 C語言中花式退出程序的方式總結_C 語言
- 2022-06-16 ASP.NET?Core?6.0?添加?JWT?認證和授權功能_實用技巧
- 2022-09-01 C++?OpenCV實戰之形狀識別_C 語言
- 2022-06-27 Vscode的SSH插件遠程連接Linux的實現步驟_其它綜合
- 2024-04-02 Springboot 切換Log4j2日志
- 2022-07-26 C++智能指針之shared_ptr的具體使用_C 語言
- 2022-09-08 pytorch中函數tensor.numpy()的數據類型解析_python
- 2024-02-28 UNI-APP,text、rich-text控件顯示字符串,當字符串過長時,實現自動換行
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支