您好,欢迎访问一九零五行业门户网

mysql数据导入sqlserver数据库方法_MySQL

bitscn.com
mysql数据导入sqlserver数据库方法
方法一:通过在mysql中备份sql来将mysql数据导入sqlserver。适合于数据量不大的情况使用(如何你的数据中存在的blob字段的数据量不是很多或者不存在可以考虑)。
                特点:对于小数据量的迁移:方便快捷。
                步骤:1:使用mysql工具备份sql文件,我这里用的是sqlyog软件。
                            2:对备份的sql文件进行处理(原因是这些备份的sql文件可以在sqlserver解析器中不能通过需要进行写修改)。此处以sqlyog举例:
/*!40101 set names utf8 */;/*!40101 set sql_mode=''*/;/*!40014 set @old_unique_checks=@@unique_checks, unique_checks=0 */;/*!40014 set @old_foreign_key_checks=@@foreign_key_checks, foreign_key_checks=0 */;/*!40101 set @old_sql_mode=@@sql_mode, sql_mode='no_auto_value_on_zero' */;/*!40111 set @old_sql_notes=@@sql_notes, sql_notes=0 */;/*data for the table `t_standard_check_unit` */insert into `t_standard_check_unit`(`system_id`,`unit_type_1`,`unit_type_2`,`unit_type_3`,`unit_type_4`,`unit_type_5`,`unit_type_6`) values ('01',9,7,6,8,4,null),('02',9,8,6,5,4,null),('03',9,8,5,6,4,null),('04',9,8,5,6,4,null),('05',9,8,6,5,4,null),('06',9,8,5,6,4,null),('07',9,9,9,8,4,null),('08',9,8,6,5,4,null),('09',9,9,9,8,4,null);/*data for the table `t_standard_system` */
上面是备份的sql文件中的部分:
注意:a:其中insert into `t_standard_check_unit`(`system_id`,`unit_type_1`,`unit_type_2`,`unit_type_3`,`unit_type_4`,`unit_type_5`,`unit_type_6`)这一段中的引号在sqlserver中不能支持所以得通过程序处理掉。
处理程序:
public void switchsqlfile(file file) throws ioexception{ bufferedreader breader = new bufferedreader(new inputstreamreader(new fileinputstream(file),utf-8)); string filepathold = file.getabsolutepath(); string filepath = filepathold.substring(0,filepathold.indexof(.)) + _switchfile + filepathold.substring(filepathold.indexof(.)); bufferedwriter bwriter = new bufferedwriter(new outputstreamwriter(new fileoutputstream(new file(filepath)),utf-8)); string str = ; while((str =breader.readline()) !=null){ if(str.contains(create database)) continue; if(str.contains(use `q9`)) continue; if(str.tolowercase().contains() values() || str.tolowercase().contains() values ()|| str.tolowercase().contains()values()||str.tolowercase().contains()values ()){ string ss = str.substring(0,str.tolowercase().indexof(values ()); str = ss.substring(0,ss.indexof(()).replaceall(`, ) + str.substring(str.tolowercase().indexof( values ()); } str +=/r/n; bwriter.write(str); } breader.close(); bwriter.close(); }
此部分程序不是很智能,此处只举个例子。
           b:这里是通过将一个表的数据导出为一行,这样导出恢复速度快,(sql优化问题),但是注意:当表中的数据行数超过1k时在sql脚本解析中是通不过的,此时应该选择一条记录一行insert语句的形式。(补充点知识:当一行过长时文本编辑器打开的速度会很慢,所以第二种方式也方便在文本编辑器中查看。)
         3:利用处理后的sql导入sqlserver数据库。
                                  方法1:直接打开sql文件通过在sqlserver中执行导入。
总结的小知识:
mysql向sqlserver2008兼容
一:脚本兼容问题
   1:sqlserver不支持在外键约束中加on delete restrict on update restrict。
   2:sqlserver2008不支持drop table if exists xxx。
   3:sqlserver2008不支持blob类型,需要改成image或者text类型。
注意,建立数据库时最好用修改的方式添加约束,这样在进行数据库恢复时可以先不建立约束,可以免去约束带来的麻烦和效率问题。
最好将约束整理到最下面。及采用表及约束而不是列及约束。
bitscn.com
其它类似信息

推荐信息