数据同步问题总结

版权声明:转载请注明出处 https://blog.csdn.net/qq_26769591/article/details/83279506

前言:在这里插入代码片
2018/10/22 工会问题总结
和孙大佬在信息中心苦战了一天,终于把所有的问题都解决了,孙大佬真的很强。思路开阔,逻辑清楚,操作精准,分析能力极强


-1 本地数据库同步的问题
最大的遗憾就是,没有学会用pi/sql 进行数据库同步 没有学会exp imp 等操作

0 数据的获取

1.安装oracle client 12 解决乱码问题

source /usr/local/oracle/instantclient_12_2/.bash_profile
sqlplus ugonghui/ugonghui@//10.113.1.50:1521/orcl;
sqlplus gonghui/gonghui@//10.113.1.50:1521/orcl;

2.学习使用脚本用sql plus 将数据导入到excel表中

参考文献:
连接运算符是双竖线“||” - 拿着菜刀的诗人 - CSDN博客: https://blog.csdn.net/programpoet/article/details/4962916
使用SQL*PLUS,构建完美excel或html输出 - Oracle Life - 云和恩墨,成就所托!: http://www.eygle.com/archives/2005/04/eoasqlplusieaae.html
Oracle sqlplus查询结果输出到文本文件或excel文件中的方法 - Oracle数据库与大数据解决方案-炼数成金-Dataguru专业数据分析社区: http://f.dataguru.cn/thread-847893-1-1.html

[root@localhost ~]# more main.sql 
set linesize 200 
set term off verify off feedback off pagesize 999 
set markup html on entmap ON spool on preformat off
spool tables.xls
@get_tables.sql
spool off
exit


[root@localhost ~]# more get_tables.sql 
 select  * from bi_manu;
[root@localhost ~]# 


SQL> @/root/main.sql
SQL> set linesize 200
SQL> set term off verify off feedback off pagesize 999
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

1.系统的导入

生成了一张sys_department.sql 直接导入到官网中去了
分析的时候可以使用:oracle 层级关系、三级查询等方法

SELECT c.id id1,c.name name1,t.id1 id2,t.name1 name2,t.id2 id3,t.name2 name3 FROM
SYS_P_DEPARTMENT c
LEFT JOIN
(
SELECT
	A.id id1,A."NAME" name1,a.PARENT_ID id2,b."NAME" name2
FROM
	"SYS_P_DEPARTMENT" A
LEFT JOIN "SYS_P_DEPARTMENT" B ON A .PARENT_ID = B.id
)t
on c.parent_id=t.id1

2.稿件问题的解决

先导入了sys_department表
生成新旧表的之间的对应关系
批量修改dept_id

UPDATE bi_manu 
 
    SET dept_id = CASE dept_id 
      WHEN	2	THEN	310
WHEN	3	THEN	311
WHEN	4	THEN	312
WHEN	5	THEN	313
WHEN	6	THEN	314
WHEN	7	THEN	315
WHEN	8	THEN	316
WHEN	9	THEN	317
WHEN	10	THEN	320
WHEN	11	THEN	318
WHEN	12	THEN	319
WHEN	13	THEN	356
WHEN	14	THEN	321
WHEN	15	THEN	322
WHEN	16	THEN	323
WHEN	17	THEN	324
WHEN	18	THEN	325
WHEN	19	THEN	326
WHEN	20	THEN	327
WHEN	21	THEN	328
WHEN	22	THEN	330
WHEN	23	THEN	331
WHEN	24	THEN	329
WHEN	25	THEN	332
WHEN	26	THEN	333
WHEN	27	THEN	26
WHEN	28	THEN	336
WHEN	29	THEN	335
WHEN	30	THEN	337
WHEN	31	THEN	338
WHEN	32	THEN	319
WHEN	33	THEN	343
WHEN	34	THEN	340
WHEN	35	THEN	341
WHEN	36	THEN	342
WHEN	37	THEN	306
WHEN	38	THEN	279
WHEN	39	THEN	296
WHEN	40	THEN	344
WHEN	41	THEN	298
WHEN	42	THEN	301
WHEN	43	THEN	303
WHEN	44	THEN	304
WHEN	45	THEN	305
WHEN	46	THEN	309
WHEN	47	THEN	308
WHEN	48	THEN	307     
    END

导入sys_department_top表并修改代码

3.sys_p_user 的导入

先修改dept_id 使用的方法和稿件的一样
生成sys_p_department_orgin表,主要是id的值从10000编号,并用sql导入到官网中国(用excel直接拖就行了)
补齐工号 使用的是八位对齐,前面用0补全

UPDATE SYS_P_USER_ORIGIN set JGH=lpad(JGH,8,'0') where LENGTH(JGH)<9

填充dept_id 根据sys_p_department_orgin提供的信息,对数据库里面dept id 为空的值进行完善

UPDATE sys_p_user A
SET A .dept_id = (
	SELECT
		DWID
	FROM
		sys_p_user_origin T
	WHERE
		A . ACCOUNT = T .JGH
)
WHERE
	A .dept_id IS NULL;

修改Email限制大小 图形化界面就可以改
增量更新 (将一张表插入到另一张表)
参考:https://bbs.csdn.net/topics/230086944

insert into sys_p_user(ID,ACCOUNT,NAME,SEX,TELEPHONE,TYPE_ID,PASSWORD,STATUS_ID,EMAIL,DEPT_ID)
select ID,JGH,XM,XBM,DH,'0','202cb962ac59075b964b07152d234b70','1',DZYX,DWID from SYS_P_USER_ORIGIN 
where JGH not in (select ACCOUNT FROM SYS_P_USER);
-

4.BI_TRADE_INFO 的导入

先修改dept_id 使用的方法和稿件的一样
生成orgin表,并删掉里面 护照为A的值 ,的身份证件号信息

update bi_trade_info set  ZJLXM=NULL, SFZH=NULL,ZJLX=NULL  WHERE ZLXLM ='‘A’

补齐工号 对sys_p_department_orgin 使用八位对齐,前面用0补全
填充dept_id 根据sys_p_department_orgin提供的信息,对数据库里面dept id 为空的值进行完善
修改Email限制大小
name 大小 图形化界面就可以改
nation大小 图形化界面就可以改
增量更新

猜你喜欢

转载自blog.csdn.net/qq_26769591/article/details/83279506