可搜索,可注册,可登录,致敬逗比大佬!尽在救援版逗比根据地 dbgjd.com
投稿文章 | 广告合作 | Telegram 群组 / 公告频道 / 使用教程

从SQL Server导出海量数据到MySQL的新思路

话说,今天给自己找了个事,要把一个数据量比较大的巨硬的SQL Server中的数据导入到MySQL中。

话说这数据量有多大呢?bak备份文件就有187M,数据库的表有90万行的数据。

那导入就导入呗,怎么来呢……

从MSSQL中导出sql脚本

似乎这是个放之四海而皆准的原则,咱都这么干。于是……

任务-生成脚本,高级中把“仅限架构”改成架构和数据

从SQL Server导出海量数据到MySQL的新思路

嗯,静静等待导出……

从SQL Server导出海量数据到MySQL的新思路

唔,1.13G的脚本,估计导回到MySQL里……反正我做完饭刷完碗洗完澡了还没导完。别想了,数据量小的话还可以玩玩,这么大,放弃吧。

MySQL Migration Toolkit

别想了,这玩意早就停止维护了。就算用的成也一堆bug的吧。

从SQL Server导出海量数据到MySQL的新思路

哥哥,我真的有JRE的……

导出成csv,用MySQL Front导入

任务-导出数据,目标选择”平面文件目标“,在第一行显示列名称

从SQL Server导出海量数据到MySQL的新思路

然后打开MySQL Front输入 – csv文件,飞快的导入,好像没什么问题?然而并没有。

从SQL Server导出海量数据到MySQL的新思路

用phpmyadmin?别想了,PHP默认有上传文件大小限制,phpmyadmin本身也有,就算这俩都不是问题,Nginx还不乐意给了5xx报错呢。

别用MySQL Front试了,我改了各种编码格式,从utf-8到gbk到gb2312,全完蛋。

导出成Excel

那试试导出成Excel?

报错,一堆看不懂的错误提示。

从SQL Server导出海量数据到MySQL的新思路

打开Excel一看,65535……下一个应该溢出了啊,?回负数了啊

从SQL Server导出海量数据到MySQL的新思路

SQL Server直接导出到MySQL

看样子很牛逼哈,当然要先安装MySQL的.Net驱动程序哈。然后任务-导出,目标选择MySQL,大概像下图这样:

从SQL Server导出海量数据到MySQL的新思路

然后下一步……

从SQL Server导出海量数据到MySQL的新思路

巨硬你是我爹还不行嘛……

行了,我还是说两种可行的方案吧。

方案一:MySQL Workbench

下载MySQL Migration Toolkit的时候,官方告诉我,这玩意停止开发啦,去用MySQL Workbench吧。好,那好吧。当然要提前下载好MySQL的ODBC驱动啊。

没错,Database – Migration Wizard,你是巫师也没用啊(☆-v-)

Source选择MS SQL,Connection Method选择ODBC(native)

从SQL Server导出海量数据到MySQL的新思路

目标就选择MySQL,很简单的设置。然后下一步选择数据库,一路下一步基本上……有的时候,你会卡在这:

从SQL Server导出海量数据到MySQL的新思路

不知道为啥这三个小圈圈都是空白的,没办法下一步。我保证test connection是没有问题的!(你信吗)

有的时候通过了,下一步到某个步骤时……可能会报各种奇怪的错误!忘记截图了。至少我第一次的时候各种报错……

好吧,其实我想说的是,这个Workbench其实是能用的,就是某一步不小心弄错了的话,就会失败,而且报错看不明白……

从SQL Server导出海量数据到MySQL的新思路

你看这不就在导入呢么……

用JetBrains全家桶的数据库工具导入csv文件

打开一个JetBrains的IDE(要Professional的哦),view-toolbox-database,添加MySQL数据源。

新建一个schema,右键-import data from file,选择我们的csv文件

从SQL Server导出海量数据到MySQL的新思路

之后出现窗口让我们定义这个表格的数据类型啊、列名什么的,列名双击可以更改数据类型,上下移动以及映射之后的列名。

从SQL Server导出海量数据到MySQL的新思路

推荐大家把write errors选中,这样如果出错,可以看日志。

之后ok导入,速度还可以哈。

从SQL Server导出海量数据到MySQL的新思路

但是你看,最后我这里报错了,说这个类型无法转换成float,估计PyCharm是根据csv里第一列的数据来决定导入之后的每一列使用什么类型,于是就给某列判断成了float,没想到后面我的某个数据不是全数字的而带上了字母。

从SQL Server导出海量数据到MySQL的新思路那就在上上个图里给Type改成Text或者varchar什么的就好啦(可以参考源数据库)

总结

JetBrains的database工具真的是太好用了,支持很多数据库,功能也很强大,容错能力也很强。还要什么管理工具啊,有个它就完全足够了。

如果你是学生有edu邮箱,快申请免费使用;

如果你在大公司工作(尤其是外企),跟老板要去;

如果你有钱,自己花钱订阅;

如果你没有edu邮箱,老板不给买,还穷,那就很不地道的改时间骗骗JetBrains、用License Server激活吧。可不,我这一天都在尝试着把Java版的JetBrains License Server port到Python,然而怎奈学艺不精,原理都搞清楚了,就是跑不过测试用例……???


转载请注明:逗比根据地 » 从SQL Server导出海量数据到MySQL的新思路

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址