Oracle数据泵导入导出数据

目录

一、导出/导入指定用户下的表带条件的数据

1.先通过Oracle视图生成可执行的SQL

2.新建一个par文件

3.使用数据泵执行该par文件

4.查询导出的行数与数据库中的行数是否一致

5.使用数据泵导入dmp文件

6.导入后查看数据量是否一致


一、导出/导入指定用户下的表带条件的数据

1.先通过Oracle视图生成可执行的SQL

sql 复制代码
SELECT 'ISS_A.' || table_name || ':"WHERE DATA_DATE IN (''20250630'',''20250731'')",'
FROM ALL_TABLES WHERE OWNER='ISS_A' AND TABLE_NAME LIKE 'ISS_A%';

2.新建一个par文件

注意:脚本里面如果不写TABLES,写SCHEMAS=ISS_A,就会导出ISS_A用户下所有表过滤后的数据

bash 复制代码
vim exp-20250630.par


USERID=ISS_A/123456@127.0.0.1:1521/testdb
DUMPFILE=ISS_A_data_20250630.dmp
LOGFILE=ISS_A_data_20250630.log
TABLES=(
ISS_A.ISS_A_ACCT_INFO,
ISS_A.ISS_A_ACCT_INFO_BAK,
ISS_A.ISS_A_BD_BS_SM_DUTY_INFO,
ISS_A.ISS_A_BD_BS_SM_DUTY_INFO_BAK,
ISS_A.ISS_A_BD_BS_SM_PUNISH_INFO,
ISS_A.ISS_A_BD_BS_SM_PUNISH_INFO_BAK
)
CONTENT=DATA_ONLY
QUERY=(
ISS_A_ACCT_INFO:"WHERE DATA_DATE IN ('20250630','20250731')",
ISS_A_ACCT_INFO_BAK:"WHERE DATA_DATE IN ('20250630','20250731')",
ISS_A_BD_BS_SM_DUTY_INFO:"WHERE DATA_DATE IN ('20250630','20250731')",
ISS_A_BD_BS_SM_DUTY_INFO_BAK:"WHERE DATA_DATE IN ('20250630','20250731')",
ISS_A_BD_BS_SM_PUNISH_INFO:"WHERE DATA_DATE IN ('20250630','20250731')",
ISS_A_BD_BS_SM_PUNISH_INFO_BAK:"WHERE DATA_DATE IN ('20250630','20250731')"
)

3.使用数据泵执行该par文件

bash 复制代码
[oracle@t-zt-db ~]$ expdp PARFILE=exp-20250630.par

4.查询导出的行数与数据库中的行数是否一致

sql 复制代码
SELECT * FROM ISS_A.ISS_A_ACCT_INFO WHERE DATA_DATE IN ('20250630','20250731');

是33行,说明无误

5.使用数据泵导入dmp文件

清空原表指定日期的数据

sql 复制代码
DELETE FROM ISS_A.ISS_A_ACCT_INFO WHERE DATA_DATE IN ('20250630','20250731');
DELETE FROM ISS_A.ISS_A_ACCT_INFO_BAK WHERE DATA_DATE IN ('20250630','20250731');
DELETE FROM ISS_A.ISS_A_BD_BS_SM_DUTY_INFO WHERE DATA_DATE IN ('20250630','20250731');
DELETE FROM ISS_A.ISS_A_BD_BS_SM_DUTY_INFO_BAK WHERE DATA_DATE IN ('20250630','20250731');
DELETE FROM ISS_A.ISS_A_BD_BS_SM_PUNISH_INFO WHERE DATA_DATE IN ('20250630','20250731');
DELETE FROM ISS_A.ISS_A_BD_BS_SM_PUNISH_INFO_BAK WHERE DATA_DATE IN ('20250630','20250731');

注意:必须加上CONTENT=DATA_ONLY,否则表结构和数据都会导入执行

sql 复制代码
impdp ISS_A/123456@127.0.0.1:1521/testdb DUMPFILE=ISS_A_data_20250630.dmp LOGFILE=imp_ISS_A_data_20250630.log CONTENT=DATA_ONLY

6.导入后查看数据量是否一致

sql 复制代码
SELECT 'SELECT * FROM ISS_A.' || table_name || ' WHERE DATA_DATE IN (''20250630'',''20250731'');,'
FROM ALL_TABLES WHERE OWNER='ISS_A' AND TABLE_NAME LIKE 'ISS_A%';

SELECT * FROM ISS_A.ISS_A_ACCT_INFO WHERE DATA_DATE IN ('20250630','20250731');
SELECT * FROM ISS_A.ISS_A_ACCT_INFO_BAK WHERE DATA_DATE IN ('20250630','20250731');
SELECT * FROM ISS_A.ISS_A_BD_BS_SM_DUTY_INFO WHERE DATA_DATE IN ('20250630','20250731');
SELECT * FROM ISS_A.ISS_A_BD_BS_SM_DUTY_INFO_BAK WHERE DATA_DATE IN ('20250630','20250731');
SELECT * FROM ISS_A.ISS_A_BD_BS_SM_PUNISH_INFO WHERE DATA_DATE IN ('20250630','20250731');
SELECT * FROM ISS_A.ISS_A_BD_BS_SM_PUNISH_INFO_BAK WHERE DATA_DATE IN ('20250630','20250731');
相关推荐
凯子坚持 c18 小时前
Qt常用控件指南(1)
开发语言·数据库·qt
Evand J18 小时前
【信号处理MATLAB例程】小波变换执行边缘检测、突变点识别和去噪功能。附代码下载链接
数据库·matlab·信号处理
MoonBit月兔18 小时前
用 MoonBit 打造的 Luna UI:日本开发者 mizchi 的 Web Components 实践
前端·数据库·mysql·ui·缓存·wasm·moonbit
天骄t18 小时前
HTML入门:从基础结构到表单实战
linux·数据库
qq_3988989318 小时前
【备忘】ASP.Net MVC无缝对接SQL Server数据库设置步骤
数据库·asp.net·mvc
努力学编程呀(๑•ี_เ•ี๑)18 小时前
宝塔上的数据库用Navicat如何连接
数据库
l1t19 小时前
AI关于MySQL 能否存储数组的回答
数据库·mysql
菩提小狗19 小时前
小迪安全_第4天:基础入门-30余种加密编码进制&Web&数据库&系统&代码&参数值|小迪安全笔记|网络安全|
前端·网络·数据库·笔记·安全·web安全
Albert Edison19 小时前
【MySQL】使用C/C++语言连接数据库
c语言·数据库·mysql
高一要励志成为佬19 小时前
【数据库】第二章 关系数据库 各种概念
数据库