Home > Database > Mysql Tutorial > body text

将部分数据导出后导入一个统一数据库

WBOY
Release: 2016-06-07 15:05:15
Original
1201 people have browsed it

问题: 如何把11个业务库里的部分数据导出来,然后整理后导入一个统一的数据库中。 (注释:这个统一的数据库中,都有不少的主外键约束。而我们的数据则有很多是不符合规范的。) 解决此问题的具体操作如下: 首先我们需要先在的测试库中把环境搭好,把统一

问题:如何把11个业务库里的部分数据导出来,然后整理后导入一个统一的数据库中。

(注释:这个统一的数据库中,都有不少的主外键约束。而我们的数据则有很多是不符合规范的。)

解决此问题的具体操作如下:

首先我们需要先在的测试库中把环境搭好,把统一库的结构导入该测试环境中:

1、用如下语句查出需要禁用的所有相关约束,然后把结果复制到命令窗口中执行:

<ccid_code>COL AA FORMAT A100;
set heading off;
SELECT 'ALTER TABLE ' || TABLE_NAME || ' DISABLE CONSTRAINT ' || CONSTRAINT_NAME || ';' AA
FROM user_constraints
ORDER BY constraint_type DESC;</ccid_code>
Copy after login

2、约束禁用后,执行导数据的脚本。

3、建例外表: @d:oracleora92 dbmsadminutlexpt1.sql

以下是找不到父项的操作,如果是数据重复,则不能如下操作,否则所有重复的数据都将删除,而我们目前可能需要保留其中一份。

<ccid_code>DELETE FROM EXCEPTIONS; --删除例外表
COMMIT;
ALTER TABLE t_offering -- 找出有问题的数据
ENABLE VALIDATE CONSTRAINT FK_T_OFFERI_REFERENCE_T_CONTRA
EXCEPTIONS INTO exceptions;
DELETE FROM t_offering a WHERE a.ROWID IN 
(SELECT ROW_ID FROM EXCEPTIONS b) --删除有误的数据
COMMIT;</ccid_code>
Copy after login

4、启用约束

<ccid_code>SELECT 'ALTER TABLE ' || TABLE_NAME || ' ENABLE CONSTRAINT ' 
|| CONSTRAINT_NAME || ';' AA
FROM user_constraints
ORDER BY constraint_type;
注释:truncate 表时,假如有子表的外键关连,不能执行该命令,
需要先禁用子表中的外键关连。
SELECT 'ALTER TABLE ' || b.table_name || ' DISABLE CONSTRAINT ' 
||b.constraint_name ||';'
FROM user_constraints a, user_constraints b
WHERE a.constraint_name = b.r_constraint_name
AND b.constraint_type = 'R'
AND a.owner = b.r_owner
AND a.table_name LIKE '''||&tablename||'''</ccid_code>
Copy after login

 

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template