plsql导出数据库表dmp⽂件并导⼊数据库过程
本⽂将通过plsql客户端⼯具,演⽰如何对Oracle数据库中的表以dmp⽂件的格式进⾏导出和导⼊。
dmp的导出
步骤如下:
1、打开plsql并登陆,点击⼯具 ——> 导出表
2、在打开的窗⼝选中要导出的表,输出⽂件那⾥指定导出的dmp⽂件的保持路径和⽂件名
3、点击导出
dmp的导⼊
步骤如下:
1、打开plsql并登陆,点击⼯具 ——> 导⼊表
打开plsql并登陆,点击⼯具 ——> 导出表
2、在打开的窗⼝中,导⼊⽂件那⾥选择dmp⽂件所在路径和⽂件
sql语句替换表中内容
3、点击导⼊
场景:
在已有dmp⽂件⽽不知道其中表的表空间名的情况下,有以下两种解决⽅法:
1、通过编辑器打开dmp⽂件,通过搜索关键字“TABLESPACE”,到所有表的所属表空间,然后将其替换为⾃定义的表空间。再将该dmp ⽂件通过plsql导⼊到Oracle数据库中。
(该⽅法只适⽤在⽂件内容较少的情况下,⽽且将表的所属表空间修改,可能会有不可预计的影响)
2、在不知表空间名的情况下,还是直接通过plsql将dmp⽂件导⼊到Oracle数据库中,在导⼊的过程中,可能会产⽣很多的错误,暂时不管。在导⼊程序执⾏完后,我们直接点击 plsql导⼊窗⼝中的⽇志选项,查看导⼊过程中⽇志信息。这时,我们可以通过⽇志所提⽰的错误信息,得知某些表原先所属的表空间名,或者是其它的⼀些重要信息。
(⼩编遇到的情况是不知道dmp⽂件中所包含的表的所属表空间名,在第⼀次导⼊dmp⽂件失败后,通过查看⽇志到数据库中的表原先所属的所有表空间后,依次创建这些表空间,并将数据库清空后
再次重新导⼊,此时已经成功。注:⾄于导出dmp⽂件时的⽤户跟导⼊时的⽤户不同也是可以的,反正我是没受到影响,当然,能够⼀样就更好了)
以下是创建数据库⽤户并授权,表空间的设定等相关的sql语句:
-- 创建oracle⽤户
create user xue identified by 123456;
(“xue”为数据库⽤户名,“123456”为该⽤户密码)
-- 为新建⽤户授予⾓⾊权限
grant dba to xue;
(为了⽅便,直接将dba⾓⾊权限赋予新建的数据库⽤户)
-- 设置oracle帐号密码永久不过期
-- 1、查看⽤户的proifle是那个,⼀般是default:
SELECT username,PROFILE FROM dba_users;
-- 2、查看指定概要⽂件(如default)的密码有效期设置:
SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
-- 3、将密码有效期由默认的180天修改成“⽆限制”:
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
(前三步已经解决第四步没必要)
-- 4、修改后,还没有被提⽰ORA-28002警告的⽤户不会再碰到同样的提⽰;
-- 已经被提⽰的⽤户必须再改⼀次密码,举例如下:
$sqlplus / as sysdba
sql> alter user xue identified by 123456;
(刚新建的数据库⽤户默认的账号密码有效期为180天,避免以后失效,直接将其设为永久不过期)
-- 1.创建表空间
create tablespace XUESPACE datafile 'C:\Java\oracle_tablespace\XUESPACE.dbf' size 100m reuse autoextend on next 10m maxsize unlimited;
(“XUESPACE”为新建的表空间名称,“C:\Java\oracle_tablespace\XUESPACE.dbf”是与表空间对应的⽂件的路径和⽂件名,其它的表空间⼤⼩相关的设定,暂时可忽略)
-- 2.创建⽤户,指定表空间和临时表空间
create user xue identified by 123456 default tablespace XUESPACE temporary tablespace temp;
(“XUESPACE”为⽤户“xue”指定的表空间,“temp”为其临时表空间)
-- 3.查看当前⽤户默认的表空间、临时表空间
select * from user_users;
( username 为当前⽤户名;
default_tablespace 为当前⽤户默认的表空间;
temporary_tablespace 为当前⽤户默认的临时表空间)
-- 4.修改⽤户默认的表空间
alter user xue default tablespace spaceX;
(将⽤户“xue”的默认表空间改为“spaceX”)
-- 查看某个表空间有多少张表
select * from all_tables where tablespace_name='spaceX';
(“spaceX”为表空间名,此处需要注意表空间名的⼤⼩写,如“USERS”必须为⼤写才能将数据查询出来)
-- 查看某个⽤户关联的所有表空间及各个表空间中表的数量
select tablespace_name,count(*) from all_tables where owner = 'XUE' group by tablespace_name;
-- Oracle如何查询表空间对应⽂件所在的路径
select * from dba_data_files where tablespace_name='USERS';
(“USERS”为表空间名)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。