从一个数据库 Mysql 中导入另一个数据库 Mysql 中,字段名不同,有什么思路?

2019-01-09 10:57:07 +08:00
 zealinux

看样子不能直接用 mysqldump,

有没有什么简单的方式?

( Python 有相关的工具吗)

5513 次点击
所在节点    MySQL
34 条回复
lieh222
2019-01-09 11:23:24 +08:00
导出为 csv 格式?
annielong
2019-01-09 11:31:47 +08:00
导出 sql 直接手工改字段名
luosuosile
2019-01-09 11:32:26 +08:00
有意思 mark
yghack
2019-01-09 11:37:05 +08:00
ETL
zuoakang
2019-01-09 11:37:51 +08:00
自己写脚本
aaa5838769
2019-01-09 11:43:24 +08:00
写脚本,修改字段名字吧
janxin
2019-01-09 11:47:05 +08:00
导 SQL 文件搜索替换一下?
scalaer
2019-01-09 12:19:56 +08:00
sqoop
icaca
2019-01-09 12:31:50 +08:00
看你的数据量,几十万几百万这种级别,用文本替换也可以 concat 自己拼接 sql 也可以
或者 create table as select 查出来再改列名,再导出也可以
id4alex
2019-01-09 12:52:20 +08:00
创建一个 view, 把字段 mapping 上,再导出 view 就好
pudgedoor
2019-01-09 12:56:05 +08:00
ETL +1
BaiMax
2019-01-09 13:17:02 +08:00
ETL 正解
promise2mm
2019-01-09 13:19:27 +08:00
阿里 DataX 了解一下?
zqyisasd
2019-01-09 13:52:47 +08:00
相同 mysql 实例用 insert select;不同实例可以用阿里云的数据传输服务 DTS。
lovelybear
2019-01-09 13:54:25 +08:00
可以自己写一个工具,做一个字段名的匹配,然后导入
xnode
2019-01-09 14:07:15 +08:00
自己写个工具 输出 sql 然后 用文本文档 全局替换字段名称
ccxml
2019-01-09 14:54:20 +08:00
select into
zealinux
2019-01-09 16:41:05 +08:00
补充:
不在一个实例上,A 是 RDS,B 是自建的 Mysql,数据量

A 还不能用命令行导出 csv 出来( INTO OUTFILE 后面目录只能在那台机器上,权限拒绝)

所以暂时用了个笨方法:
---
用 Navicat 执行 sql 语句,
出来结果全部 copy 出来(制表符分割)的 csv 文件,
然后再用 sed 将文件改成逗号分割的 csv 文件。

最后再通过 python + pandas 读 csv,导入 B 中
wwww961h
2019-01-09 16:48:51 +08:00
直接复制表,改名字,如果数据量大,会很慢,
masker
2019-01-09 16:50:00 +08:00
SELECT CONCAT( "INSERT INTO `your_tabls` (id,type,realname,password,nickname,headimg,mobile,email,status,login,last_login_ip,reg_platform,reg_ip) VALUES(", id, ',', TYPE, ',', IFNULL(truename, nickname), ',', `password`, ',', nickname, ',', head, ',', mobile, ',', IFNULL(email, '"email"'), ',', `status`, ',', login, ',', last_login_ip, ',', platform, ',', reg_ip, ')' ) AS res FROM lt_member WHERE `password` != '' AND TYPE = 1;

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/525282

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX