请教各位大神,这个代码该如何写 1C

数据库A中大约存放5千条记录,数据库B中大约存放500万条记录。数据库A与数据库B中均有t_user,t_password,t_usr_pwd表,
t_user表有user_index,user_name字段,
t_password表有password_index,password字段,
t_user_pwd表有user_index,password_index字段。
_数据库B中所有的password每隔一段时间都会随机变化一次,每隔30分钟时间做一次检查,修改数据库A中与数据库B中user_name字段相同的用户的user_password。
本人是技术菜鸟,想知道这个该如何写一段C/C++的小程序实现它,求解!

3个回答

如果这个小程序是linux下执行的, 为什么不用Python写这个小程序, 然后放到crontab里定时执行呢.
同是C/C++, 我写脚本一般是Python或者shell.

言归正传, 我不知道你这个怎么写. 不同的业务场景, 潜规则不同. 比如在数据库A和数据B, 同一个user_name对应的user_index是不是一样, 同一个user_index对应的password_index是不是一样.
不知道上面的, 很难写出较优的SQL语句.

个人觉得, 写烂的SQL语句, 是在犯罪.

qq735659370
__YYY 回复郭建堂: 啊哈,会慢慢学习Python的,感谢你的建议!
2 年多之前 回复
RAM_MAM
郭建堂 回复郭建堂: A中数据量很小, B中的较大. 给B加好索引就行了. Python要学的, 比如这个机会, 用Python写脚本很快, 干嘛给自己加难度. 按时下班多好
2 年多之前 回复
RAM_MAM
郭建堂 回复__YYY: 如果是用Python写, 就简简单单的遍历数据库A的t_password表, 拿到所有的<password_index,password>当做键值对存到map里. 然后遍历这个map对于每个key, 去B里 select password from t_password where password_index = key. 如果得到的password和存到map里的value不同, 就去UPDATE数据A的数据就行了
2 年多之前 回复
RAM_MAM
郭建堂 如果规整的对应, 楼下说的很有道理. 触发器, 具体你跟楼下的老哥沟通. 如果不是规整的对应, 考虑用Python脚本.
2 年多之前 回复
qq735659370
__YYY 在Linux下执行,不会用Python。。。0.0所以想知道该如何用c或c++写出来符合要求的一段程序
2 年多之前 回复
qq735659370
__YYY 两个数据库的表结构相同,每个user与password与他们各自相对应的Index是唯一的,只有password在改变。
2 年多之前 回复

如果都是在数据库层面可以尝试使用触发器来解决,在表t_password中增加触发器,当password字段update时触发修改数据库A中的相关字段

qq735659370
__YYY 想要的是写在程序里面去实现它
2 年多之前 回复

SQL语句大概长这样 将AB表连接然后循环更新 , 然后C/C++语言写个定时器定时调用SQL语句???(抛砖引玉。。)

BEGIN 
  FOR i IN (SELECT t_user, t_password FROM A, B WHERE A.t_user = B.t_user) LOOP
    UPDATE B SET t_password = i.t_password WHERE t_user = i.t_user;
    COMMIT;
  END LOOP;
END;

qq_18703313
putline 回复__YYY: 用主键关联 不然查出来的是笛卡尔积
2 年多之前 回复
qq735659370
__YYY A,B是两个数据库,难懂啊可以直接相连?
2 年多之前 回复
qq_18703313
putline commit 写循环外面吧,,,
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问