听说日本到处都是神,在保护肯努力的人
数据库迁移 SQLServer2000到MYsql
如何无需编程便将数据SQL导出到MYSQL
从sql导出到mysql的方法很多,现介绍一种无需编程,直接利用sql和mysql里的图形界面进行导入导出的简单方法。
前提是已经安装了sqlserver客户端和mysql的图形界面管理工具phpmyadmin。
在控制台根目录下打开sqlserver企业管理器,新建sqlserver组,根据自己的情况进行选择;然后新建sqlserver 注册,进行对sqlserver的连接。准备妥当后,下面就开始了:
首先打开数据转换服务,新建包,打开DTS界面,在连接中选择数据源进行配置。再选择将要转换到的目的文件,这里我选的 Textfile(destination),选择好文件的存放位置之后,我们来新建一个任务。这里我们只选择转换数据任务,将带有“选择源连接”“选择目的连接”的鼠标分别选中数据源和目的之后,我们对新生成的连接进行定义,在其属性中将源,目的,转换依次定义。
执行任务,提示成功。保存任务。然后在新建的任务上导出数据,有向导提示,其中一项选择“从源数据库复制表和视图”。
这一步已经把数据导出到目的文件中。
下一步在mysql中新建表,与将要导入的结构保持一致时,直接选取“从文本文件中提取数据,插入到数据表:”,将选项添好后,“发送”就可以了,浏览一下,数据已导入了。若要导入的表已经存在,且属性名也不同,这时就先建一个与要导入的数据相同结构的表并导入数据(按刚才的进行就可以了),然后在mysql中导出“数据和结构”,得到sql语句,将其在文本文件中编辑,利用文本编辑器的替换功能,将表名修改,列名加入,最后将其粘贴在要导入表的执行sql语句的地方,执行一下,数据便导入了。
若过程中出现错误,请仔细检查配置的选项,确保正确。
SQLserver数据库导入Mysql数据库的体验
因工作需要,要将存放在sql server数据库中的数据全部导入到mysql数据库中,在网上搜集相关资料,找到两种方法,现在分别谈谈对他们的看法。
第一种是安装mysql ODBC,利用sql server的导出功能,选择mysql数据源,进行数据的直接导出,这种方法很简便,但是针对实际应用有很多弊端,最主要体现就是数据类型问题,首先,sql server数据库中
的ntext,image等数据类型的数据无法直接写入到mysql数据库中,据说只要稍加改动就可以,可惜偶这只菜鸟还没想到如何改动,其次,因为偶在mysql中的数据库设计中将时间都设成int型(保存的是时间戳),所以在数据导过来后,就会出现冲突,再次,这种方法生成的mysql数据表的字段类型都不很合适,所以此种方法我觉得不能提倡。
第二种是利用php或asp脚本来实现数据的导入功能,这种方法需要编写程序,但灵活性大,操作也不是那么困难,一切都尽在你的掌握之中,现简单介绍一下该方法
前提条件是你的mysql环境已经搭建好了,先建好目标数据库,再将所有的表结构用sql语句生成,现在万事具备,只缺数据了。
可以通过下面的php脚本来实现sql server中mydb数据库的user表中数据向mysql中mydb数据库导入
<?
$cnx = odbc_connect('web', 'admin', '123456');//'web'是sqlserver中mydb的数据源名,'admin'是访问mydb的用户名,'123456'是访问mydb的密码
$cur= odbc_exec( $cnx, 'select * from user' );//打开sql server中mydb数据库的user表
$num_row=0;
$conn=mysql_pconnect("localhost","root","123456");// 连接mysql
@mysql_select_db('mydb',$conn) or
die("无法连接到数据库,请与管理员联系!");//打开mysql的mydb数据库
while( odbc_fetch_row( $cur )) //从sql server的mydb库中的user表逐条取出数据,如果对数据进行选择,可在前面的select语句中加上条件判断
{
$num_row++;
$field1 = odbc_result( $cur, 1 ); // 这里的参数i(1,2,3..)指的是记录集中的第i个域,你可以有所选择地进行选取,fieldi得到对应域的值,然后你可以对fieldi进行操作
$field2 = odbc_result( $cur, 2 );
$field3 = odbc_result( $cur, 3 );
$field4 = odbc_result( $cur, 4 );
$field5 = odbc_result( $cur, 5 );
$field6 = odbc_result( $cur, 6 );
$field5 = timetoint($field5); //这里是对sql server中的datetime类型的字段进行相应转换处理,转换成我所需要的int型
$querystring = "insert into user
(id,name,username,password,recdate)
values('$field1','$field2','$field3','$field4','$field5')" ;
mysql_query($querystring,$conn);
}
function timetoint($str){
$arr1=split(" ",$str);
$datestr=$arr1[0];
$timestr=$arr1[1];
$arr_date=split("-",$datestr);
$arr_time=split(":",$timestr);
$year=$arr_date[0];
$month=$arr_date[1];
$day=$arr_date[2];
$hour=$arr_time[0];
$minute=$arr_time[1];
$second=$arr_time[2];
$time_int=mktime($hour,$minute,$second,$month,$day,$year);
return $time_int;
}
?>
将该段脚本存成sql.php,在服务器上执行,就可以将服务器上sql server中mydb数据库的user表中的数据导入到mysql中mydb数据库的user表中去。其他表的操作与此雷同,就不赘述了。
下面再介绍一下asp脚本实现sql server中mydb数据库的数据向mysql中mydb数据库导入
<%
set conn=server.createobject("adodb.connection")
conn.open 'web', 'admin', '123456' // 'web'是sqlserver中mydb的数据源名,'admin'是访问mydb的用户名,'123456'是访问mydb的密码
set rs=server.createobject("adodb.recordset")
sql="select ID,name,username,password,datediff(s,'1970-01-01 00:00:00',recdate)-8*3600,reid,filename,fileContentType,filevalue from senddate" //这条sql语句实现了将datetime类型的recdate字段转化成unix时间戳的int型
rs.open sql,conn,1,3
set conn1=server.createobject("adodb.connection")
conn1.open "myoa","root","q1-d6=7?"
i=1
do while not rs.eof
field1 = rs(0)
field2 = rs(1)
field3 = rs(2)
field4 = rs(3)
field5 = rs(4)
sql1 = "insert into user(ID,name,username,password,recdate)
values("&field1&",'"&field2&"','"&field3&"','"&field4&"',"&field5&")"
conn1.execute sql1
rs.movenext
i=i+1
loop
rs.close
set rs=nothing
conn.close
set conn=nothing
conn1.close
set conn1=nothing
%>
以上两个是分别采用php脚本和asp脚本对user表的数据进行由sql server到mysql的导入其间我采用2种回避的方法来避免ntext,image类型数据的传递,一种是将ntext字段改为nvarchar(4000),因为实际情况,原始数据中该字段的数据长度都未超过4000个字,所以并没有出现数据截断,另一个手段是将image类型数据取出来写到文件中,以文件形式保存,将文件路径存到数据库中,方法见下:
function makeattach(fileContentType,filevalue,i)
select case fileContentType
case "application/msword"
ext="doc"
case "application/vnd.ms-excel"
ext="exl"
case "application/vnd.ms-powerpoint"
ext="pps"
case "application/x-rar-compressed"
ext="rar"
case "application/x-zip-compressed"
ext="zip"
case "image/gif"
ext="gif"
case "image/pjpeg"
ext="jpg"
case "text/plain"
ext="txt"
case else
ext="x"
end select
if ext<>"x" then
set fso=server.createobject("FileSystemObject")
fName="attech"&i&"."&ext
Dir="d:attach"
If fso.FileExists(Dir & fName) Then fso.deletefile Dir & fName
If fName<>"" AND NOT fso.FileExists(Dir & fName) Then
Set strm1=Server.CreateObject("ADODB.Stream")
strm1.Open
strm1.Type=1 'Binary
strm1.Write filevalue
strm1.SaveToFile Dir & fName,2
Set strm1=Nothing
end if
makeattach=fName
end if
end function
这个函数有3个输入参数,第一个是文件的contentType,第二个是文件的二进制数值,第三个是个可以区别文件名的变量,先根据contentType确定所存文件的后缀名,然后就是将二进制数值保存成指定文件名的文件,并将文件名作为输出参数返回,将返回的参数作为数据写到mysql的数据库中保存。
时间匆忙,先总结到这里,希望这些文字能对有需要的人有些帮助,少走些弯路
posted on 2006-09-14 15:47
77
阅读(3319)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
Powered by:
BlogJava
Copyright © 77
<
2006年9月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
导航
BlogJava
首页
新随笔
联系
聚合
管理
统计
随笔 - 203
文章 - 7
评论 - 121
引用 - 0
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(12)
给我留言
查看公开留言
查看私人留言
随笔分类
ajax技术(5)
(rss)
Linux服务器技术
(rss)
上海房产(3)
(rss)
随笔档案
2014年5月 (1)
2009年12月 (1)
2009年6月 (2)
2008年11月 (3)
2008年10月 (1)
2008年9月 (2)
2008年5月 (2)
2008年4月 (2)
2008年2月 (1)
2007年12月 (4)
2007年11月 (6)
2007年10月 (3)
2007年6月 (2)
2007年5月 (1)
2007年4月 (3)
2007年3月 (18)
2007年2月 (34)
2007年1月 (23)
2006年12月 (11)
2006年11月 (17)
2006年10月 (8)
2006年9月 (20)
2006年8月 (22)
2006年7月 (5)
2006年6月 (6)
2006年5月 (5)
文章分类
日语一级学习
(rss)
日语三级学习
(rss)
日语二级学习
(rss)
文章档案
2007年1月 (1)
2006年12月 (1)
2006年11月 (1)
2006年6月 (1)
2006年5月 (1)
2006年4月 (2)
新闻档案
2007年1月 (1)
相册
ShangHai GreenTown
API文档
ejb API
Hibernate3
J2SE6.0
java api5.0 chinese
Servlet2.5
soukei
Spring API
Struts 1.2.9API
java开发与研究
25岁的CEO戴志康
82年的高手
apache
CSDN项目外包
eclipse插件资源中心
http://blog.csdn.net/victorwujava
Jason 's blog of J2EE
java设计与模式
open doc(开源文档)
sourceforge
Spring Framework 开发参考手册
Spring框架完全进阶专题|中国IT实验室
sun ejb3.0
sun技术社区
基于AJAX,符合Web2.0,完全无刷新的Blog平台
帝国开发
很重要的基础知识
胡详春对日软件开发
赴日招聘信息
软件测试网
陈亚东技术blog
にほん
小晓日语论坛
小哩
日本语 汉语 翻訳
(rss)
港龙航空时海倩
上海房产
东京生活
吴现锋东京
大業(ダイギョウ)株式会社
日文流行歌曲在线视听
杨帅东京
胡详春东京
数据库大全
MySQL技术社区
中国oracle用户讨论组(精)
张彦锋
数据库大全
编程与开发
CHINA ASP
CSDN知识库
sap技术站点
中国Eclipse社区
中国程序员网
中国软件评测中心
程序员
美国开发生活
bjtubruce
李晓虎NY
袁峰 华盛顿州
走向管理
alibaba
flickr
jackma
世界网址大全
凌晨
投资与创业
精通ejb3.0罗时飞
舒畅
谢志新
金山软件Kingsoft第一副总裁 王峰
搜索
最新评论
1. re: 日文系统 中文软件乱码解决
nnnn@gg
--IDELL
2. re: 临时文件夹,c:\documents and settings\administrator\local settings\temp文件夹下有700多M的东西,可以删除吗?
777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
--77777777
3. re: 临时文件夹,c:\documents and settings\administrator\local settings\temp文件夹下有700多M的东西,可以删除吗?
给我 13把英雄级武器
--俄菲翁
4. re: 临时文件夹,c:\documents and settings\administrator\local settings\temp文件夹下有700多M的东西,可以删除吗?
sad
--shenjiaya
5. re: 临时文件夹,c:\documents and settings\administrator\local settings\temp文件夹下有700多M的东西,可以删除吗?
满意
--张来娣
阅读排行榜
1. 临时文件夹,c:\documents and settings\administrator\local settings\temp文件夹下有700多M的东西,可以删除吗?(108578)
2. 日文系统 中文软件乱码解决(21850)
3. 今天去了一趟花旗软件,感触颇深。深知自己的差距还很大。(10435)
4. 美国Java程序员薪水调查 (10061)
5. Javascript 常用功能收集(5711)
评论排行榜
1. 临时文件夹,c:\documents and settings\administrator\local settings\temp文件夹下有700多M的东西,可以删除吗?(30)
2. 学习任务:2006年8月23日(7)
3. 日文系统 中文软件乱码解决(6)
4. 和老大(东京)的聊天记录(5)
5. 如何能学好日语(3)