[关闭]
@liruiyi962464 2025-04-03T07:18:40.000000Z 字数 16160 阅读 28

对接学校数据库 mysql实现数据库传递数据

mysql


mysql -h 202.207.122.44 -u data_sync -p'L$7cx&6W*7zJ##po'

mysql -u root -p'Zc2024rJ'
USE cpoc_sync
SHOW TABLES;
SELECT VERSION();

  1. -- 确保目标表使用兼容的字符集
  2. ALTER TABLE ODS_SXJCSJ CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  3. ALTER TABLE ODS_SXBXGMQKSJ CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  4. ALTER TABLE ODS_SXBGJLSJ CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  5. ALTER TABLE ODS_TYYHRZDLSJ_SXXT CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  6. ALTER TABLE federated_intern_basic_data CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  7. ALTER TABLE federated_intern_insurance CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  8. ALTER TABLE federated_intern_report CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  9. ALTER TABLE federated_user_auth_data CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

开启FEDERATED引擎 B数据到A数据数据同步

  1. -- 检查是否支持FEDERATED引擎
  2. SHOW ENGINES;
  3. -- 如果没有启用,需要在my.cnf/my.ini中添加
  4. [mysqld]
  5. federated
  6. -- 开启后 参考sql执行即可

MySQL 定时任务设置方案

要将你的存储过程设置为每天早上6点自动执行,可以使用 MySQL 的事件调度器(Event Scheduler)。以下是完整的实现步骤:

1. 首先确保 MySQL 事件调度器已启用

  1. -- 检查事件调度器状态
  2. SHOW VARIABLES LIKE 'event_scheduler';
  3. -- 如果未启用,执行以下命令(需要SUPER权限)
  4. SET GLOBAL event_scheduler = ON;

2. 创建每日6点执行的定时事件

  1. DELIMITER //
  2. CREATE EVENT daily_sync_event
  3. ON SCHEDULE
  4. EVERY 1 DAY
  5. STARTS TIMESTAMP(CURRENT_DATE, '06:00:00')
  6. DO
  7. BEGIN
  8. CALL sync_all_data_to_server_b();
  9. END //
  10. DELIMITER ;

3. 完整的事件管理方案

查看所有事件

  1. SHOW EVENTS;

修改事件

  1. ALTER EVENT daily_sync_event
  2. ON SCHEDULE
  3. EVERY 1 DAY
  4. STARTS TIMESTAMP(CURRENT_DATE, '06:00:00')
  5. DO
  6. CALL sync_all_data_to_server_b();

禁用/启用事件

  1. -- 禁用事件
  2. ALTER EVENT daily_sync_event DISABLE;
  3. -- 启用事件
  4. ALTER EVENT daily_sync_event ENABLE;

删除事件

  1. DROP EVENT IF EXISTS daily_sync_event;

4. 注意事项

  1. 权限要求

    • 创建事件需要 EVENT 权限
    • 执行存储过程需要相应表的操作权限
  2. 错误处理

    • 你的存储过程中已有错误处理逻辑,事件执行失败会记录错误
  3. 服务器时间

    • 确保MySQL服务器时区设置正确
    • 检查命令:SELECT @@global.time_zone, @@session.time_zone;
  4. 长期运行

    • 事件会一直存在直到显式删除
    • 重启MySQL服务不会影响已创建的事件
  5. 日志记录

    • 建议在存储过程中增加更详细的执行日志记录

sql语句

  1. -- 删除实习成绩数据表
  2. DROP TABLE IF EXISTS ODS_SXJCSJ;
  3. -- 删除实习保险购买情况表
  4. DROP TABLE IF EXISTS ODS_SXBXGMQKSJ;
  5. -- 删除实习报告记录表
  6. DROP TABLE IF EXISTS ODS_SXBGJLSJ;
  7. -- 删除统一用户认证登录数据表
  8. DROP TABLE IF EXISTS ODS_TYYHRZDLSJ_SXXT;
  9. -- B服务器上执行以下SQL创建目标表
  10. -- 实习基础数据子类表
  11. CREATE TABLE IF NOT EXISTS ODS_SXJCSX (
  12. `ZJSJWYXBS` varchar(32) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  13. `XXDM` varchar(10) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  14. `XH` varchar(20) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  15. `XSXM` varchar(108) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  16. `ZYH` varchar(64) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  17. `ZYMC` varchar(60) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  18. `BJMC` varchar(60) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  19. `XZM` varchar(2) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  20. `XQM` varchar(1) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  21. `SXSFKS` varchar(1) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  22. `SXSFJS` varchar(1) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  23. `SXQYHYLBM` varchar(4) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  24. `SXNR` text COLLATE utf8mb4_general_ci,
  25. `SFDK` varchar(1) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  26. `SXAPM` varchar(2) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  27. `SXXSM` varchar(2) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  28. `SXSC` decimal(5,0) DEFAULT NULL,
  29. `SXCJ` decimal(20,1) DEFAULT NULL,
  30. `SXKSRQ` varchar(8) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  31. `SXJSRQ` varchar(8) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  32. `SXQYMC` varchar(200) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  33. `SXDDSZSJGBM` varchar(6) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  34. `SXDDSZSJGMC` varchar(60) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  35. `SXDDSZSHJGBM` varchar(6) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  36. `SXDDSZSHJGMC` varchar(60) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  37. `XNZDJSGH` varchar(20) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  38. `XNZDJSXM` varchar(36) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  39. `NZDJSDH` varchar(30) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  40. `QYZMZDRYXM` varchar(36) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  41. `QYZMZDRYDH` varchar(30) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  42. `ZFSXXSSJBC` varchar(10) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  43. `XJJDZXDH` varchar(30) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  44. `SFQDSFXY` varchar(1) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  45. `SFKSSX` varchar(1) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  46. `SFFGWSX` varchar(1) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  47. `RXNF` varchar(4) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  48. `SJCJSJ` varchar(15) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL
  49. )DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
  50. -- 实习保险购买情况表
  51. CREATE TABLE IF NOT EXISTS ODS_SXBXGMQKSX (
  52. `ZJSJWYXBS` varchar(32) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  53. `XXDM` varchar(10) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  54. `XH` varchar(20) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  55. `XSXM` varchar(36) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  56. `BXXZMC` varchar(120) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  57. `BDH` varchar(64) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  58. `BXFCZFMC` varchar(200) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  59. `BXGMRQ` varchar(7) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  60. `BXGMFM` varchar(2) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  61. `GMBXZLM` varchar(2) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  62. `SJCJSJ` varchar(15) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL
  63. )DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
  64. -- 实习报告记录表
  65. CREATE TABLE IF NOT EXISTS ODS_SXBGJLSX (
  66. `ZJSJWYXBS` varchar(32) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  67. `XXDM` varchar(10) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  68. `XH` varchar(20) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  69. `XSXM` varchar(108) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  70. `SXQYMC` varchar(180) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  71. `SXGWMC` varchar(100) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  72. `SXZDJS` varchar(36) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  73. `SXBGLBM` varchar(2) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  74. `SXBGNRZY` varchar(500) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  75. `SXBGNR` varchar(999) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  76. `SXBGTJRQ` varchar(8) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  77. `JSPYZTM` varchar(1) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  78. `SJCJSJ` varchar(15) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL
  79. )DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
  80. -- 统一用户认证登录数据表
  81. CREATE TABLE IF NOT EXISTS ODS_TYYHRZDLSJ_SXXT (
  82. `ZJSJWYXBS` varchar(32) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  83. `XXDM` varchar(10) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  84. `DLZH` varchar(30) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  85. `JS` varchar(60) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  86. `SZBMMC` varchar(200) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  87. `DLSJ` varchar(15) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  88. `DLIP` varchar(128) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  89. `ZHZTM` varchar(2) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  90. `SJCJ` varchar(15) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL
  91. )DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
  92. -- A服务器上执行以下SQL创建FEDERATED
  93. -- 实习基础数据FEDERATED
  94. CREATE TABLE IF NOT EXISTS federated_intern_basic_data (
  95. ZJSJWYXBS VARCHAR(32),
  96. XXDM VARCHAR(10),
  97. XH VARCHAR(20),
  98. XSXM VARCHAR(108),
  99. ZYH VARCHAR(64),
  100. ZYMC VARCHAR(60),
  101. BJMC VARCHAR(60),
  102. XZM VARCHAR(2),
  103. XQM VARCHAR(1),
  104. SXSFKS VARCHAR(1),
  105. SXSFJS VARCHAR(1),
  106. SXQYHYLBM VARCHAR(4),
  107. SXNR TEXT(2000),
  108. SFDK VARCHAR(1),
  109. SXAPM VARCHAR(2),
  110. SXXSM VARCHAR(2),
  111. SXSC DECIMAL(5,0),
  112. SXCJ DECIMAL(20,1),
  113. SXKSRQ VARCHAR(8),
  114. SXJSRQ VARCHAR(8),
  115. SXQYMC VARCHAR(200),
  116. SXDDSZSJGBM VARCHAR(6),
  117. SXDDSZSJGMC VARCHAR(60),
  118. SXDDSZSHJGBM VARCHAR(6),
  119. SXDDSZSHJGMC VARCHAR(60),
  120. XNZDJSGH VARCHAR(20),
  121. XNZDJSXM VARCHAR(36),
  122. NZDJSDH VARCHAR(30),
  123. QYZMZDRYXM VARCHAR(36),
  124. QYZMZDRYDH VARCHAR(30),
  125. ZFSXXSSJBC VARCHAR(10),
  126. XJJDZXDH VARCHAR(30),
  127. SFQDSFXY VARCHAR(1),
  128. SFKSSX VARCHAR(1),
  129. SFFGWSX VARCHAR(1),
  130. RXNF VARCHAR(4),
  131. SJCJSJ VARCHAR(15)
  132. ) ENGINE=FEDERATED
  133. CONNECTION='mysql://data_sync:L$7cx&6W*7zJ##po@202.207.122.44:3306/cpoc_sync/ODS_SXJCSJ'
  134. DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
  135. -- 实习保险购买情况FEDERATED
  136. CREATE TABLE IF NOT EXISTS federated_intern_insurance (
  137. ZJSJWYXBS VARCHAR(32),
  138. XXDM VARCHAR(10),
  139. XH VARCHAR(20),
  140. XSXM VARCHAR(36),
  141. BXXZMC VARCHAR(120),
  142. BDH VARCHAR(64),
  143. BXFCZFMC VARCHAR(200),
  144. BXGMRQ VARCHAR(7),
  145. BXGMFM VARCHAR(2),
  146. GMBXZLM VARCHAR(2),
  147. SJCJSJ VARCHAR(15)
  148. ) ENGINE=FEDERATED
  149. CONNECTION='mysql://data_sync:L$7cx&6W*7zJ##po@202.207.122.44:3306/cpoc_sync/ODS_SXBXGMQKSJ'
  150. DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
  151. -- 实习报告记录FEDERATED
  152. CREATE TABLE IF NOT EXISTS federated_intern_report (
  153. ZJSJWYXBS VARCHAR(32),
  154. XXDM VARCHAR(10),
  155. XH VARCHAR(20),
  156. XSXM VARCHAR(108),
  157. SXQYMC VARCHAR(180),
  158. SXGWMC VARCHAR(100),
  159. SXZDJS VARCHAR(36),
  160. SXBGLBM VARCHAR(2),
  161. SXBGNRZY VARCHAR(500),
  162. SXBGNR VARCHAR(999),
  163. SXBGTJRQ VARCHAR(8),
  164. JSPYZTM VARCHAR(1),
  165. SJCJSJ VARCHAR(15)
  166. ) ENGINE=FEDERATED
  167. CONNECTION='mysql://data_sync:L$7cx&6W*7zJ##po@202.207.122.44:3306/cpoc_sync/ODS_SXBGJLSJ'
  168. DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
  169. -- 统一用户认证登录数据FEDERATED
  170. CREATE TABLE IF NOT EXISTS federated_user_auth_data (
  171. ZJSJWYXBS VARCHAR(32),
  172. XXDM VARCHAR(10),
  173. DLZH VARCHAR(30),
  174. JS VARCHAR(60),
  175. SZBMMC VARCHAR(200),
  176. DLSJ VARCHAR(15),
  177. DLIP VARCHAR(128),
  178. ZHZTM VARCHAR(2),
  179. SJCJ VARCHAR(15)
  180. ) ENGINE=FEDERATED
  181. CONNECTION='mysql://data_sync:L$7cx&6W*7zJ##po@202.207.122.44:3306/cpoc_sync/ODS_TYYHRZDLSJ_SXXT'
  182. DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
  183. -- A服务器创建同步存储过程
  184. DELIMITER //
  185. -- 同步实习基础数据
  186. CREATE DEFINER=`root`@`%` PROCEDURE `sync_intern_basic_data`()
  187. BEGIN
  188. -- 新增字符集设置
  189. SET NAMES 'utf8mb4';
  190. SET CHARACTER SET utf8mb4;
  191. -- 先清空远程表
  192. TRUNCATE TABLE federated_intern_basic_data;
  193. -- 插入新数据
  194. INSERT INTO federated_intern_basic_data
  195. WITH LatestInternshipApplication AS (
  196. SELECT stu_id, stage_id,is_matching,in_unit,province,city,guidance_teacher,guidance_phone,recruit_way,
  197. wsch_tea_name,phone,salary_ship,school_hotline,is_tripartitep,is_cross,
  198. ROW_NUMBER() OVER (PARTITION BY stu_id ORDER BY create_time DESC) AS rn
  199. FROM zc_internship_application
  200. WHERE process = 6
  201. ),
  202. LatestWeek AS (
  203. SELECT
  204. ss.user_id,
  205. ROUND(IFNULL(ws.week_score, 0), 2) AS 周记成绩,
  206. ROUND(IFNULL(r.report_score, 0), 2) AS 实习报告成绩,
  207. ROUND(IFNULL(sc.company_one, 0), 2) AS 企业评分,
  208. ROUND(
  209. IFNULL(sc.company_one, 0) * 0.7 +
  210. (IFNULL(ws.week_score, 0) * 0.6 + IFNULL(r.report_score, 0) * 0.4) * 0.3,
  211. 2
  212. ) AS average_evaluation,
  213. ss.stage_id
  214. FROM
  215. zc_student_info ss
  216. INNER JOIN zc_major_info m ON ss.major_id = m.id
  217. INNER JOIN zc_teacher_info tea ON ss.sch_teacher = tea.id
  218. INNER JOIN zc_pastern zp ON ss.pastern_id = zp.id
  219. LEFT JOIN (
  220. SELECT
  221. si.id,
  222. si.stu_name,
  223. w.stage_id,
  224. IF(
  225. SUM(
  226. CASE
  227. WHEN p.teacher_evaluation REGEXP '^[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)$'
  228. THEN CAST(p.teacher_evaluation AS DECIMAL(10,2))
  229. ELSE 0
  230. END
  231. ) / 20 > 100,
  232. 100,
  233. SUM(
  234. CASE
  235. WHEN p.teacher_evaluation REGEXP '^[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)$'
  236. THEN CAST(p.teacher_evaluation AS DECIMAL(10,2))
  237. ELSE 0
  238. END
  239. ) / 20
  240. ) AS week_score
  241. FROM
  242. zc_week w
  243. INNER JOIN zc_process p ON w.id = p.day_id AND p.state = 0
  244. INNER JOIN zc_student_info si ON w.create_by = si.user_id
  245. INNER JOIN zc_internship_stage i ON w.stage_id = i.id
  246. WHERE
  247. i.is_end = '0' AND i.del_flag = '0'
  248. GROUP BY
  249. si.id, si.stu_name, w.stage_id
  250. ) ws ON ss.id = ws.id
  251. LEFT JOIN (
  252. SELECT
  253. ir.student_user_id AS stu_id,
  254. ir.stage_id,
  255. ir.evaluate_score AS report_score
  256. FROM
  257. zc_internship_report ir
  258. INNER JOIN zc_internship_stage i ON ir.stage_id = i.id
  259. WHERE
  260. ir.evaluate_state = 2
  261. GROUP BY
  262. ir.student_user_id, ir.stage_id, ir.evaluate_score
  263. ) r ON ss.user_id = r.stu_id
  264. LEFT JOIN zc_student_score sc ON ss.id = sc.stu_id
  265. INNER JOIN zc_internship_stage i ON ss.stage_id = i.id AND i.is_end = '0' AND i.del_flag = '0'
  266. )
  267. SELECT DISTINCT
  268. MD5(s.id) AS ZJSJWYXBS,
  269. '4113013397' AS XXDM,
  270. s.stu_num AS XH,
  271. s.stu_name AS XSXM,
  272. '' AS ZYH,
  273. m.major_name AS ZYMC,
  274. c.class_name AS BJMC,
  275. '' AS XZM,
  276. '' AS XQM,
  277. CASE
  278. WHEN NOW() >= i.internship_start_time THEN 1
  279. ELSE 0
  280. END AS SXSFKS,
  281. CASE
  282. WHEN NOW() > i.internship_end_time THEN 1
  283. ELSE 0
  284. END AS SXSFJS,
  285. '' AS SXQYHYLBM,
  286. i.stage_name AS SXNR,
  287. COALESCE(la.is_matching, 0) AS SFDK,
  288. CASE WHEN la.recruit_way = 0 THEN 2 ELSE la.recruit_way END AS SXAPM,
  289. '1' AS SXXSM,
  290. COALESCE(CEILING(DATEDIFF(CURDATE(), i.internship_start_time) / 7.0), 0) AS SXSC,
  291. COALESCE(lw.average_evaluation, 0) AS SXCJ,
  292. DATE_FORMAT(i.internship_start_time, '%Y%m%d') AS SXKSRQ,
  293. DATE_FORMAT(i.internship_end_time, '%Y%m%d') AS SXJSRQ,
  294. la.in_unit AS SXQYMC,
  295. '' AS SXDDSZSJGBM,
  296. la.province AS SXDDSZSJGMC,
  297. '' AS SXDDSZSHJGBM,
  298. la.city AS SXDDSZSHJGMC,
  299. '' AS XNZDJSGH,
  300. la.guidance_teacher AS XNZDJSXM,
  301. la.guidance_phone AS NZDJSDH,
  302. la.wsch_tea_name AS QYZMZDRYXM,
  303. la.phone AS QYZMZDRYDH,
  304. CASE
  305. WHEN la.salary_ship IS NULL THEN 0
  306. WHEN la.salary_ship = '' THEN 0
  307. WHEN la.salary_ship REGEXP '^[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)$' THEN
  308. CAST(la.salary_ship AS DECIMAL(10,2))
  309. ELSE 0
  310. END AS ZFSXXSSJBC,
  311. la.school_hotline AS XJJDZXDH,
  312. la.is_tripartitep AS SFQDSFXY,
  313. la.is_cross AS SFKSSX,
  314. '' AS SFFGWSX,
  315. g.grade_name AS RXNF,
  316. DATE_FORMAT(NOW(), '%Y%m%d% %H%i%s') AS SJCJSJ
  317. FROM
  318. zc_student_info s
  319. LEFT JOIN zc_grade_info g ON s.grade_id = g.id
  320. LEFT JOIN zc_pastern p ON s.pastern_id = p.id
  321. LEFT JOIN zc_major_info m ON s.major_id = m.id
  322. LEFT JOIN zc_class c ON s.class_id = c.id
  323. LEFT JOIN zc_internship_stage i ON s.stage_id = i.id
  324. LEFT JOIN LatestInternshipApplication la ON s.id = la.stu_id AND la.rn = 1 AND la.stage_id = i.id
  325. LEFT JOIN LatestWeek lw ON lw.user_id = s.user_id AND lw.stage_id = i.id
  326. WHERE s.del_flag = 0 AND i.is_end = '0' AND i.del_flag = '0'
  327. ORDER BY p.pastern_name, g.grade_name, m.major_name, c.class_name, s.stu_num;
  328. SELECT CONCAT('实习基础数据同步完成,影响行数: ', ROW_COUNT()) AS message;
  329. END //
  330. -- 同步实习保险购买情况
  331. CREATE PROCEDURE sync_intern_insurance()
  332. BEGIN
  333. -- 新增字符集设置
  334. SET NAMES 'utf8mb4';
  335. SET CHARACTER SET utf8mb4;
  336. TRUNCATE TABLE federated_intern_insurance;
  337. INSERT INTO federated_intern_insurance
  338. WITH LatestInternshipApplication AS (
  339. SELECT stu_id, stage_id,insurance_type,policy,insurance_bution,
  340. ROW_NUMBER() OVER (PARTITION BY stu_id ORDER BY create_time DESC) AS rn
  341. FROM zc_internship_application
  342. )
  343. SELECT DISTINCT
  344. MD5(s.id) AS ZJSJWYXBS,
  345. '4113013397' AS XXDM,
  346. s.stu_num AS XH,
  347. s.stu_name AS XSXM,
  348. la.insurance_type AS BXXZMC,
  349. la.policy AS BDH,
  350. la.insurance_bution AS BXFCZFMC,
  351. '' AS BXGMRQ,
  352. '' AS BXGMFM,
  353. '' AS GMBXZLM,
  354. DATE_FORMAT(NOW(), '%Y%m%d%H%i%s') AS SJCJSJ
  355. FROM
  356. zc_student_info s
  357. LEFT JOIN zc_grade_info g ON s.grade_id = g.id
  358. LEFT JOIN zc_pastern p ON s.pastern_id = p.id
  359. LEFT JOIN zc_major_info m ON s.major_id = m.id
  360. LEFT JOIN zc_class c ON s.class_id = c.id
  361. LEFT JOIN zc_internship_stage i ON s.stage_id = i.id
  362. LEFT JOIN LatestInternshipApplication la ON s.id = la.stu_id AND la.rn = 1 AND la.stage_id = i.id
  363. WHERE s.del_flag = 0 AND i.is_end = '0' AND i.del_flag = '0'
  364. ORDER BY p.pastern_name, g.grade_name, m.major_name, c.class_name, s.stu_num;
  365. SELECT CONCAT('实习保险数据同步完成,影响行数: ', ROW_COUNT()) AS message;
  366. END //
  367. -- 同步实习报告记录
  368. CREATE PROCEDURE sync_intern_report()
  369. BEGIN
  370. -- 新增字符集设置
  371. SET NAMES 'utf8mb4';
  372. SET CHARACTER SET utf8mb4;
  373. TRUNCATE TABLE federated_intern_report;
  374. INSERT INTO federated_intern_report
  375. WITH LatestInternshipApplication AS (
  376. SELECT stu_id, stage_id, in_unit, internship, guidance_teacher, guidance_phone,
  377. ROW_NUMBER() OVER (PARTITION BY stu_id ORDER BY create_time DESC) AS rn
  378. FROM zc_internship_application
  379. WHERE process = 6
  380. ),
  381. LatestWeek AS (
  382. SELECT zw.id,zw.create_by, zw.content, DATE_FORMAT(zw.create_time, '%Y%m%d') AS create_time, zp.state, zw.title,
  383. zw.stage_id,zp.teacher_comments,zp.teacher_evaluation
  384. FROM zc_student_info st
  385. INNER JOIN zc_week zw ON st.user_id = zw.create_by and zw.state != 1
  386. INNER JOIN zc_internship_stage sta ON st.stage_id = sta.id
  387. LEFT JOIN zc_process zp ON zp.day_id = zw.id
  388. WHERE st.del_flag = '0' AND sta.is_end = '0' AND sta.del_flag = '0'
  389. )
  390. SELECT
  391. MD5(s.id) AS ZJSJWYXBS,
  392. '4113013397' AS XXDM,
  393. s.stu_num AS XH,
  394. s.stu_name AS XSXM,
  395. la.in_unit AS SXQYMC,
  396. la.internship AS SXGWMC,
  397. la.guidance_teacher AS SXZDJS,
  398. '1' AS SXBGLBM,
  399. lw.content AS SXBGNRZY,
  400. lw.content AS SXBGNR,
  401. DATE_FORMAT(lw.create_time, '%Y%m%d') AS SXBGTJRQ,
  402. CASE lw.state WHEN 0 THEN '1' WHEN 2 THEN '2' ELSE '2' END AS JSPYZTM,
  403. DATE_FORMAT(NOW(), '%Y%m%d%H%i%s') AS SJCJSJ
  404. FROM
  405. zc_student_info s
  406. LEFT JOIN zc_grade_info g ON s.grade_id = g.id
  407. JOIN zc_pastern p ON s.pastern_id = p.id
  408. LEFT JOIN zc_major_info m ON s.major_id = m.id
  409. LEFT JOIN zc_class c ON s.class_id = c.id
  410. INNER JOIN zc_internship_stage i ON s.stage_id = i.id
  411. INNER JOIN LatestInternshipApplication la ON s.id = la.stu_id AND la.stage_id = i.id
  412. INNER JOIN LatestWeek lw ON lw.create_by = s.user_id
  413. WHERE s.del_flag = 0 AND i.is_end = '0' AND i.del_flag = '0'
  414. ORDER BY p.pastern_name, g.grade_name, m.major_name, c.class_name, s.stu_num, la.in_unit, la.guidance_teacher, la.internship, i.stage_name;
  415. SELECT CONCAT('实习报告数据同步完成,影响行数: ', ROW_COUNT()) AS message;
  416. END //
  417. -- 同步统一用户认证登录数据
  418. CREATE PROCEDURE sync_user_auth_data()
  419. BEGIN
  420. -- 新增字符集设置
  421. SET NAMES 'utf8mb4';
  422. SET CHARACTER SET utf8mb4;
  423. TRUNCATE TABLE federated_user_auth_data;
  424. INSERT INTO federated_user_auth_data
  425. WITH LatestSysUserRole AS (
  426. SELECT
  427. su.id,
  428. GROUP_CONCAT(sr.role_name ORDER BY sr.role_name ASC SEPARATOR ',') AS role_names
  429. FROM
  430. sys_user su
  431. JOIN
  432. sys_user_role sur ON su.id = sur.user_id
  433. JOIN
  434. sys_role sr ON sur.role_id = sr.id
  435. GROUP BY
  436. su.id
  437. )
  438. SELECT distinct
  439. MD5(su.id) AS ZJSJWYXBS,
  440. '4113013397' AS XXDM,
  441. sl.username AS DLZH,
  442. ls.role_names AS JS,
  443. zd.dept_name AS SZBMMC,
  444. DATE_FORMAT(sl.create_time, '%Y%m%d% %H%i%s') AS DLSJ,
  445. sl.ip AS DLIP,
  446. 1 AS ZHZTM,
  447. DATE_FORMAT(NOW(), '%Y%m%d% %H%i%s') AS SJCJ
  448. FROM sys_log sl
  449. JOIN
  450. sys_user su ON sl.userid = su.username AND sl.userid != 'admin'
  451. JOIN
  452. LatestSysUserRole ls ON su.id = ls.id
  453. LEFT JOIN
  454. zc_teacher_info zti ON su.id = zti.user_id
  455. LEFT JOIN
  456. zc_depart zd ON zd.id = zti.depart
  457. where sl.log_type = 1
  458. order by sl.create_time desc;
  459. SELECT CONCAT('用户认证数据同步完成,影响行数: ', ROW_COUNT()) AS message;
  460. END //
  461. -- 创建总控存储过程,同步所有数据
  462. CREATE PROCEDURE sync_all_data_to_server_b()
  463. BEGIN
  464. DECLARE exit handler for sqlexception
  465. BEGIN
  466. GET DIAGNOSTICS CONDITION 1 @sqlstate = RETURNED_SQLSTATE,
  467. @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT;
  468. SELECT CONCAT('Error occurred: ', @errno, ' (', @sqlstate, '): ', @text) AS error_message;
  469. ROLLBACK;
  470. END;
  471. START TRANSACTION;
  472. CALL sync_intern_basic_data();
  473. CALL sync_intern_insurance();
  474. CALL sync_intern_report();
  475. CALL sync_user_auth_data();
  476. COMMIT;
  477. SELECT '所有数据同步完成' AS message;
  478. END //
  479. DELIMITER ;
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注