上级部门发了100多G的dmp文件,需要从中提取单位需要数据。先是导入dmp数据,再select导出csv格式数据(三个表其中一个表数据两千多万条记录),然后在笔记本电脑上安装mysql,建表导入csv数据。大表数据分批导出四张,每个csv有500多w条数据,然后导进mysql时csv要转utf8码,还好有这个工具可以打开转码,snaptext_x64_v1.0*ex.e**
步骤。
- dmp导入oracle数据;
- 查询导出csv;
- 安装MySQL,建表;
- 转码导入csv。
- dmp导入oracle数据;
--1.0先创建表空间,下次可以直接用1.2.2语句来建大表空间;
CREATE TABLESPACE YTSR_DYDATA DATAFILE 'D:\oradata\orcl\YTSR_DYDATA.dbf' SIZE 10G AUTOEXTEND ON NEXT 1G;
--1.1给表空间授权
GRANT CREATE SESSION,CREATE TABLE,CREATE VIEW,CREATE SEQUENCE,UNLIMITED TABLESPACE TO YTSR_DYDATA;
--2.1先根据log日志文件中的用户名来创建用户
CREATE USER YTSR_DYDATA IDENTIFIED BY *****
DEFAULT TABLESPACE YTSR_DYDATA TEMPORARY TABLESPACE temp;
--2.2给用户授权
grant dba to YTSR_DYDATA;
--3.0用这句导入,直接在cmd命令行里执行该语句、其他要在sql环境(SQL Developer工具里执行)
impdp YTSR_DYDATA/xx@orcl remap_SCHEMA=YTSR_DYDATA:YTSR_DYDATA DIRECTORY=dumpDir DUMPFILE=SRDYDATA20240118.DMP logfile=SRDYDATA20240118.log;
--4.0根据3.0导入报错提示的表空间名称来修改表空间名称
alter tablespace YTSR_DYDATA rename to SJQY;
alter user YTSR_DYDATA default tablespace SJQY temporary tablespace temp;
--5.0再次执行3.0导入语句
impdp YTSR_DYDATA/xx@orcl remap_SCHEMA=YTSR_DYDATA:YTSR_DYDATA DIRECTORY=dumpDir DUMPFILE=SRDYDATA20240118.DMP logfile=SRDYDATA20240118.log;
--1.2.1删除表空间及内容,避免下句执行不了同名的大表空间
DROP TABLESPACE SJQY INCLUDING CONTENTS;
--1.2.2创建大表空间
create bigfile tablespace SJQY datafile 'D:\oradata\orcl\SJQY.dbf' size 200g autoextend on;

根据3.0导入报错提示的表空间名称来修改表空间名称
导出查询后的数据dmp
create table sr_setl_d20240116 as
select * from sr_setl_d20240116 where (定点归属医保区划='xx' or 参保所属医保区划='xx')
create table sr_mdtrt_d20240116 as
select * from sr_mdtrt_d20240116 where (定点归属医保区划='xx' or 参保所属医保区划='x')
create table sr_fee_list_d20240116 as
select * from sr_fee_list_d20240116 where (定点医药机构编号 like'%xx%' or 参保所属医保区划='xx')
exp YTSR_DYDATA/xx@orcl file=D:\work_data\dmpFile\S
DYDATA20240118.dmp tables=(sr_setl_d20240116_xx,sr_mdtrt_d20240116_xx
_fee_list_d20240116_xx) log=D:\work_data\dmpFile\SRDXDYDATA20240118.log;
