分类 数据库相关 下的文章

新的工作需要用到MySQL。Leader让我复制一个数据库用来测试。以前用SQL Server都是直接图形化操作,从A数据库导出到B数据库就可以。Oracle就用expdp和impdp命令进行导出导入。MySQL的话,都是导出SQL脚本,再新建个数据库来执行。

网上找个这个教程:MySQL快速复制数据库的方法 http://www.tudaxia.com/archives/357

教程中只需两部:
1)新建数据库(shell命令)

# mysql -uroot -ppassword
mysql> CREATE DATABASE `newdb` DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;

2)复制数据。通过管道的方式把两条命令合并为一条。(shell命令)

# mysqldump db1 -uroot -ppassword --add-drop-table | mysql newdb -uroot -ppassword

当数据很大的时候,建议还是老老实实地先把源数据库的数据备份成文件,再导入新的数据。(shell命令)

# mysqldump db1 -uroot -ppassword --add-drop-table --default-character-set=utf8 > /home/db_export/db1.sql
# mysql newdb -uroot -ppassword < /home/db_export/db1.sql

用Oracle导出导入数据,以前用exp和imp总是报字符集的错误。后来查了下,Oracle 10g新增了expdp(导出)和impdp(导入)两个工具,而它们会自动根据数据库的配置来设置导出文件的字符集,就是可以无视客户端的字符集设置了。但是有个缺点,导出文件只能放在服务器上。这个问题不大,只要设好目录及相关权限就可以了。

以下例子,假设把USER_A的数据库,复制成USER_B的数据库。

首先,看一下已定义好的目录。如果有需要就新增一个。新增前要授权用户拥有“create any directory”的权限。

--查看已定义的文件夹
select * from dba_directories;

--查看用户“USER_A”的权限
select * from dba_sys_privs where grantee='USER_A';

--授创建文件夹的权限
grant create any directory to USER_A;

--创建目录
create or replace directory NEW_DIR as '/tmp';

进行导入导出之前,要授权相关用于拥有读写文件夹的权限。USER_A要导出数据,那他应该有“写”文件夹的权限;USER_B要导入数据,他要有“读”文件夹的权限。嫌麻烦的话,可以同时赋予文件夹的读写权限。

--授权用户“USER_A”拥有文件夹“NEW_DIR”的读写权限
grant read,write on directory NEW_DIR to USER_A;

--授权用户“USER_A”只有文件夹“NEW_DIR”的写权限
grant write on directory NEW_DIR to USER_A;

--授权用户“USER_B”只有文件夹“NEW_DIR”的读权限
grant read on directory NEW_DIR to USER_B;

导出导入的相关参数,查一下就知道了,这里只是操作该用户的所有对象。其中impdp的参数中,remap_schema是把源用户转换成目标用户(格式是 源用户:目标用户),remap_tablespace是把源表空间转换为目标表空间(格式是 源表空间:目标表空间)。以下命令需要在服务器的命令窗口执行。

--导出备份文件,USER_A的数据库
expdp USER_A/PASSWORD@sid schemas=USER_A directory=NEW_DIR dumpfile=user_a_backup.dmp

--导入备份文件,把USER_A的数据库导入到USER_B的数据库
impdp USER_B/PASSWORD@sid remap_schema=USER_A:USER_B remap_tablespace=USER_A_TS:USER_B_TS directory=NEW_DIR dumpfile=user_a_backup.dmp

参考资料:
exp/imp 与 expdp/impdp 对比 及使用中的一些优化事项
http://blog.csdn.net/tianlesoftware/article/details/6093973

ORACLE expdp/impdp详解(原创)
http://czmmiao.iteye.com/blog/2041703

oracle 查看 用户,用户权限,用户表空间,用户默认表空间
http://it4j.iteye.com/blog/2002433