mssql大数据高效率导入mysql
之前在网络上 看到 qqqun数据库 就将其下载下来玩玩大数据(纯属研究)
下载下来发现是mssql 的,个人不怎么喜欢mssql 数据库
同样的负载压力,MySQL要消耗更少的CPU和内存,MS SQL的确是很耗资源
mysql 运行不需要启动那么多的服务 体积更小 mssql 体积很大
mysql 可以跨平台 可以绿色启动 无需安装
于是乎就将该数据库转换成mysql (相信很多人转过)
之前尝试用Navicat 转换 发现速度巨慢
下面分享下我的思路
1、将所有数据库和表合并成一库一表(这样方便更好的处理数据)
@echo off
::echo 该操作会覆盖原有数据 且会执行很长时间 按任意键将继续执行
::pause>nul
::echo delete from qqinfo..qqinfo>1.sql
del /q 1.sql
setlocal Enabledelayedexpansion
set p=0
for /l %%i in (1,1,11) do (
for /l %%j in (1,1,100) do (
set /a p=!p!+1
echo INSERT INTO qqinfo.dbo.qqinfo^([QQNum],[Nick],[QunNum]^) SELECT [QQNum],[Nick] ,[QunNum] FROM GroupData%%i.dbo.Group!p!>>1.sql
echo go>>1.sql
)
)
osql -E -i 1.sql
echo 执行完毕!
bcp "SELECT [QQNum],[Nick] ,[QunNum] FROM qqinfo.dbo.qqinfo" queryout qun.txt -c -S127.0.0.1 -Usa -Psasa
4、将数据导入到mysql数据库(自动创建库 表 和索引 如果只是一个库一表 创建索引会卡很久很久 很久)
@echo off
::延时脚本
IF EXIST time.vbs @del /q /s time.vbs
@echo wscript.sleep 1000>time.vbs
::创建数据库和表脚本
IF EXIST tables.sql @del /q /s tables.sql
for /l %%i in (1,1,15) do (
echo create table if not exists qqinfo_%%i ^(^`ID^` int^(11^) NOT NULL AUTO_INCREMENT,^`QQNum^` int^(11^) NOT NULL,^`Nick^` char^(20^) ,^`QunNum^` int^(11^) ,PRIMARY
KEY ^(^`ID^`^),KEY ^`inx_qqinfo^` ^(^`QQNum^`,^`QunNum^`^) ^) ENGINE=MyISAM DEFAULT CHARSET=utf8^;>>tables.sql
)
::创建导入数据脚本
setlocal EnableDelayedExpansion
set num=0
set p=H:/mysql/data/tmp/
IF EXIST load.sql @del /q /s load.sql
for /r %%i in (qun_a*.txt) do (
set /a num=!num!+1
echo load data infile ^'!p!%%~nxi^' into table qqinfo_2.qqinfo_!num! fields terminated by ^':^' ^(ID,QQNum,Nick,QunNum^)^;>>load.sql
)
::创建数据库
mysql -u root -p123456 -e "create database if not exists `qqinfo_2` DEFAULT CHARACTER SET gbk;"
echo 正在创建表...
@cscript.exe //nologo time.vbs
mysql -u root -p123456 qqinfo_2 < tables.sql
@cscript.exe //nologo time.vbs
echo 创建完成...
mysql -u root -p123456 -e "show tables;" qqinfo_2
@cscript.exe //nologo time.vbs
cls
echo 导入数据 ...
echo 可能需要很久 请耐心等待...
@cscript.exe //nologo time.vbs
mysql -u root -p123456 qqinfo_2 < load.sql
cls
echo 导入成功!
@del /q /s time.vbs
@del /q /s tables.sql
@del /q /s load.sql
pause>nul
编码 (库、表)统一为gbk 因为bcp导出的数据 为gbk
所用到工具均为数据库自带 注意路径
3个小时处理完所有 比传统方法快 不是一点两点....
分表插入数据并创建索引(分表是重点 如果插入到一库一表 会非常非常慢 估计一个星期吧 甚至更长!!!)
本人非专业人士 了解的知识很粗浅 如果您有更好的见解 欢迎指点 重在交流
评论48次
收藏,make
收藏。。。。备之
必须mark~~~
good work
GOOD job! thanks
仅研究
已经有人将QQ群数据库做成可视化查询了。可以在网上公共查询了。自己搭建数据库的人都是不差硬盘的主吧~
必须mark,我也打算转换