求助: SQLSERVER 2005 迁移到 Mysql 的解决方案

2016-12-26 16:41:29 +08:00
 bonfy

各位万能的V友,请问下  SQLSERER 2005 数据 如何迁移到 Mysql,有什么好的方法么?

目前我想到的方法是:

  1. 导出 excel (.xls)
  2. 用 csvkit 将 xls 转成 csv
  3. 将 csv 导入到 mysql  (第三步还没实践)

几点说明:

这样看起来的话,还是有点复杂,而且我还没有尝试将 csv 导入到 mysql,不清楚会不会有中文字符问题,毕竟 Sql server 2005 是 Chinese_PRC_CI_AS,导出后导入 mysql 不一定兼容

求教V友有没有这方面的经验的,指点一二,有什么简单的方法能够完成,而且最好能解决掉中文字符集的问题(存入 Mysql 最好用 utf-8 格式)。

先在此谢谢各位

3712 次点击
所在节点    程序员
35 条回复
bonfy
2016-12-26 22:04:11 +08:00
@foo2bar 差不多了

总结下就是工具虽然方便,但是在导入的时候自动判断字段的属性 还有长度 其实大部分时候是错的,调整起来也是真的麻烦

所以如果要多次迁移的话,还是自己写代码保险,一劳永逸; 就一次的话,工具也是可以用用的,但是工具真的也有工具的问题,谁用谁知道啊。。。
satifanie
2016-12-26 22:07:54 +08:00
你需要的是 Kettle
DRcoding
2016-12-26 22:18:11 +08:00
kettle 做数据清洗和转移是很方便的,各种方便的组件。

另外,导入数据到 mysql 中最高效的方法是 mysql 的 load 方法,可以先从 mysql 查询数据写到一个文本文件中,然后再 load 进 mysql 当中。
billlee
2016-12-26 23:09:20 +08:00
SQLite3 管理界面是什么鬼, SQLite 并没有官方 GUI 吧
bonfy
2016-12-27 08:13:30 +08:00
@satifanie @DRcoding 嗯,反正都已经折腾到现在了, Kettle 我也一并去试试看吧。。。或许有惊喜呢
bonfy
2016-12-27 08:15:58 +08:00
@billee 好吧,我描述有问题, SQLite 命令行界面

$ sqlite3 test.db
sqlite> select * from table;

这样是可以看到中文显示,但是用 peewee 读表,就是字符集错误
realpg
2016-12-27 09:06:58 +08:00
写程序搬,不用任何转换工具
总共的表数如果少,那么直接针对每个表写个搬迁程序,一个表一个
总表如果多,就写一个通用转换读取表 meta 信息的全自动化转
ebony0319
2016-12-27 09:28:14 +08:00
http://dev.mysql.com/downloads/connector/net/
这是 Mysql 官方的提供的 connector-net 的包。

第一步:
```
select COLUMN_NAME,case when DATA_TYPE='varchar' then DATA_TYPE+'('+CAST(CHARACTER_MAXIMUM_LENGTH as varchar(20))+')' when DATA_TYPE='numeric' or DATA_TYPE='decimal' then DATA_TYPE+'(10,5)'
else DATA_TYPE end as 'type'
,CHARACTER_MAXIMUM_LENGTH,* from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='你的表'

```
然后创建你的 mysql 表

程序迁移。
sxy707
2016-12-27 11:24:44 +08:00
kettle
ebony0319
2016-12-27 11:40:24 +08:00
https://drive.google.com/file/d/0B8gkQ67RbZnuQ2JNNWk5VFFFbzg/view

随便写的,你可以稍微改一下。实测可以。
bonfy
2016-12-27 12:43:21 +08:00
@ebony0319 要下班后回家才能翻 qiang ,回去再看,先行谢过。
bonfy
2016-12-27 12:43:42 +08:00
@sxy707 软件要 800M ,回去再下载试试
satifanie
2016-12-27 17:12:00 +08:00
@bonfy 如果数据量不大,可以直接使用向导生成。 如果数据量大,需要用分页支持。请使用 5.x 版本吧。 6.x 7x 资源要的多
bonfy
2016-12-27 20:09:55 +08:00
@ebony0319 哇塞,整一个项目工程啊,慢慢看。。。
ebony0319
2016-12-27 20:39:42 +08:00
可以遍历数据库所有表,然后创建表和字段。都在 INFORMATION_SCHEMA.COLUMNS 表里面。

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

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

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

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

© 2021 V2EX