工做中有个任务是把MySQL数据库导入SqlServer中,由于任务紧急,这周一直在加班作,过程很是曲折,软件重装了几遍,网上资料也查了很多,基本上全部的问题都遇到了,不过总算是弄好了,期间也学到很多东西,仍是总结一下!
一.MySQL的安装和基本操做(以前彻底没用过)
1.安装的是mysql-essential-5.0.51b-win32.msi,同时安装了mysql-gui-tools-5.0-r17-win32.msi(这是个图形用户化界面,这个工具听说比较强大,可是我只用到其中最基本的功能,其余还有待学习)。安装过程没什么好说的,基本是按照向导提示,可是我第一次安装的时候没有提示输入用户名和口令,直接致使链接MySQL的时候连不上,试过网上一些强制重置口令的方法,都没有成功,因此也不写出来了,后来卸载了重装就行了。
2.链接MySQL:
.进入安装目录的bin目录下,输入命令
mysql -u root -p回车,会提示输入密码,输入后,会出现mysql提示符,代表链接成功。
3.基本的命令:
1、显示当前数据库服务器中的数据库列表:
mysql> SHOW DATABASES;
2、显示数据库中的数据表:
mysql> USE 库名;
mysql> SHOW TABLES;
3、显示数据表的结构:
mysql> DESCRIBE 表名;
4、创建数据库:
mysql> CREATE DATABASE 库名;
5、创建数据表:
mysql> USE 库名
;
mysql> CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1));
6、删除数据库:
mysql> DROP DATABASE 库名;
7、删除数据表:
mysql> DROP TABLE 表名;
8、将表中记录清空:
mysql> DELETE FROM 表名;
9、显示表中的记录:
mysql> SELECT * FROM 表名;
10、往表中插入记录:
mysql> INSERT INTO 表名 VALUES (”hyq”,”M”);
11、更新表中数据:
mysql-> UPDATE 表名 SET 字段名1=’a',字段名2=’b’ WHERE 字段名3=’c';
关于MySQL基本网上的介绍不少,能够查询,须要说明的是MySQL的配置文件是安装目录下的my.ini,这个文件很重要,里面存在了不少配置信息,这个文件出错极可能致使MySQL服务不能启动,这个文件在C:WINDOWS目录下也有一个,需和安装目录下的一致,修改的时候这两个都要修改。还有就是MySQL安装的时候会让选择默认的字符集,安装时若是已经明确字符集能够提早选好,能够省去不少麻烦,若是没有选择也没关系,安装好后能够修改,关于字符集下面会专门说下。
二 SqlServer安装及注意事项
1.安装
原本安装的是SqlServer 2005 express版本,这个版本免费,可是不少功能受限制,好比导入导出数据功能就没有,只好卸载了重装SqlServer 2000,卸载了安装有时会出现问题,缘由是注册表有个项没删干净,打开注册表,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager中找到PendingFileRenameOperations项目,并删除它。这样就能够清除安装暂挂项目。
还有一个问题就是xp上很差安装SqlServer2000企业版,方法以下:
一、找一张SQL server服务器版光盘,在光盘上找到目录“MSDE”并进入,运行SETUP.EXE文件,并按照程序要求进行安装。安装完成从新启动计算机。
二、运行光盘中的,AUTORUN.EXE文件,或让光盘自动运行,打开安装界面后,点击“安装SQL server 2000组件(C)”=》“安装数据库服务器(S)”这里程序将提示你“....服务器组件在此系统上不受支持,.....”点“肯定”。进入新的安装界面,点击“下一步”,选择默认的 “本地计算机”=》“建立新的SQL server”=》“仅客户端工具”...,一路点击“下一步”。直至安装结束。从新启动计算机。
三、计算机名要改为全大写的,机器名在系统属性的“计算机名”里能够找到,好比取名“SERVER”,更名后,关闭“企业管理器” 。
四、到“开始”--“程序”-“Microsoft SQL Server”中打开“客户端网络实用工具”,点“别名”若是“服务器别名配置”里没有数据,咱们须要手工添加,点 “添加”按钮。在“添加网络库配置”的“网络库”选项中,咱们选择默认的“Named Pipes(P)”项,并为服务器取个别名“SERVER”,这时管道名称会自动添加“\\SERVER\pipe\sql\query”咱们就不要管它了。点“肯定”退出。
五、这一步咱们要进入注册进行一下修改了,打开注册表编辑器,找到[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
MSSQLServer\MSSQLServer],这一项,里面有一个键值LoginMode默认值是“1”,如今将该值改成“2”(安装MSDE时,默认的SQL Server身份验证方式为“仅 Windows"的身份验证方式,即sa用户没法验证,经过修改以上的注册表键值来将身份验证方式改成SQL Server和Windows混合验证之后,就能够用sa用户登陆了)。修改完毕,重启电脑成功了。
三 MySQL数据库导入
目标是目标机的MySQL数据库导到我本身的机器上。试过三种方法,把目标机器上的数据库用phpmyadmin导出为.sql温江,而后用phpmyadmin,或者命令行导入MySQL,都不行,都是出现字符集不匹配,后来把目标机器上的数据库文件都拷贝到本身的机器上居然能够,十分诡异,下面详细说下
一、用phpmyadmin
phpmyadmin较新的版本中有Import这个功能,老版本没有,phpmyadmin的配置就不讲了,主要是config.inc.php文件里面有很多选项,网上讲的比较多,就不重复了。
要注意的是
$cfg['Servers'][$i]['only_db'] = 'XXX';指定这个选项后,phpmyadmin中就只会出现指定的数据库了。
phpmyadmin限制上传文件的大小,默认是2M,能够经过修改配置文件
php.ini(在php的安装目录下)来指定你想上传的大小。主要是这三个参数:post_max_size、upload_max_filesize、 memory_limit,还有的说max_execution_time 和max_input_time 也需修改,不过我只改了前面的就ok了。
用phpmyadmin也能够创建数据库和数据表,这里需注意新建的时候字符集的选择必须和MySQL的一致,不然中文会出现乱码。
这种方法能够导入,可是字符集一直有问题,最后没有成功。
二、用命令,命令很简单
链接上MySQL后,选择数据库命令
use 数据库名;导入命令
:
source XXX.sql
这里的这个XXX.sql须要提早拷到MySQL的bin目录下,可是这种方式也是字符集问题,最后没有成功。
3.直接拷贝数据库文件
这种方法是把目标机器上的.frm,.MYD,.MYI文件拷贝到本身机器上MySQL安装目录data文件下对应数据库的文件夹中。必须保证你机器上MySQL的字符集和数据库源的MySQL字符集一致,我这里选的都是gb2312。而后用phpmyadmin访问,成功,中文也不是乱码了。
4、MySQL导入SqlServer
方法:
1.安装mysql数据库的ODBC驱动mysql-connector-odbc-5.1.5-win32.msi(最好去官网下最新版本,不然对中文字符集支持的很差,我开始用的版本比较老,导进去以后,中文都是问号)
2.打开控制面板\管理工具\数据源ODBC,在用户DSN中添加一个MySQL ODBC 5.1数据源。
3.在登陆login选项卡中输入数据源名称Data Source Name,此处输入MysqlDNS;而后输入服务器Server,用户User,密码Password,输入正确后选择要导入的数据库。在链接选项connect options中根据须要设置MySql使用的端口port和字符集Character Set。
4.打开sql server企业管理器,新建一数据库MySql。选择该数据库,单击右键选择全部任务\导入数据。
5.选择数据源为其它(ODBC数据源),用户/系统DSN为MysqlDNS。其他根据向导进行,便可将数据从MySql数据库导入到MSSQL数据库中。
5、MySQL字符集
MySQL字符集一直比较乱,出的问题比较多,网上的解决方案也五花八门,我以为这个主要是看rp。。。这里只简单介绍下相应的知识。
查看MySQL字符集的命令 mysql> show variables like '%char%';出现
+--------------------------+-------------------------------------+------
| Variable_name | Value |......
+--------------------------+-------------------------------------+------
| character_set_client | utf8 |...... -- 客户端字符集
| character_set_connection | utf8 |......
| character_set_database | utf8 |...... -- 数据库字符集
| character_set_filesystem | binary |......
| character_set_results | utf8 |......
| character_set_server | utf8 |...... -- 服务器字符集
| character_set_system | utf8 |......
| character_sets_dir | D:\MySQL Server 5.0\share\charsets\ |......
+--------------------------+-------------------------------------+------
这里除了character_set_system 没办法改之外,其余均可以用命令修改,如SET character_set_client='gbk';不过这种修改重启MySQL服务器之后就恢复成原来的了,须要到my.ini中修改default-character-set(有两处都要改)。
字符集不匹配致使中文乱码的问题比较多,网上说的解决方案也不定奏效,能够多修改几种编码方案都试一下,记得让MySQL,phpmyadmin,还有数据库的字符集一直,不肯定字符集能够用上面介绍的命令查看。
总结:以上是完成MySQL导入SqlServer时碰到的问题,数据库因为配置较多,有时候会出现很诡异的问题,你们设置或者修改配置时必定得记得本身改了什么,还要把原始的那份备份下,以防出现意外错误。