仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 591|回复: 6
打印 上一主题 下一主题

[学习教程] MYSQL网页编程之ACCESS数据库向MySQL疾速迁徙小程序(一...

[复制链接]
灵魂腐蚀 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:35:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
DBaaS解决方案既可以解决这些问题,又能为客户节约资金。相反作为解决方案提供商,采用DBaaS模式似乎就并不那么有吸引力了,因为与企业内部署软件的解决方案相比,DBaaS意味着更低的利润。access|mysql|程序|数据|数据库克日,自己为了将为公司开辟的一个信息办理体系从之前试运转的开辟呆板上(WindowsNT+IIS4.0+Access)迁徙至一台真实的Linux服务器上(Apache1.3.12+PHP4.03+MySQL3.23.26),个中数据库中的几十个表的内容迁徙,入手下手让我小费了一些周折,从网上也下载了一些MySqL的客户软件或是数据库办理软件,写得较好的软件均无数据迁徙功效,但其迁徙体例不过乎两种,一种是接纳文件引进体例,此种体例在处置数据库中有和分开符不异的字符时,会发生毛病,特别是在处置ACCESS中的Memo字段,很简单堕落,最初招致导出后的数据不是多了就是少了。而另外一种撑持ODBC间接导进的功效较强,基础可无毛病地导进各个表的内容,但很遗憾,这必需是创建在ACCESS中表格的字段是英文是才能够,如在ACCESS中字段是中文名,一样平常也堕落,不克不及乐成导进。
为此我只好花了点工夫写了两个小程序,用于将ACCESS数据库的内容向MySQL迁徙,经利用,效果还不错,特在此写出贡献给列位一试或评判。

先概述一下利用办法,
1,将ACCESS的数据库创建一个"systemDSN";
2,依据ACCESS数据库中各表的称号,在MySQL中创建响应的各个空表;
3,运转fdlist.php;
4,运转import.php;
5,每运转一次3,4步可迁徙一个表,然后修正fdlist.php中的ACCESS源表名和MySQL中的方针表名,再运转3,4步,直至迁徙一切的表,

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
以下为fdlist.php源程序
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<html>
<head>
<styletype=text/CSS>
body,td,li,div,p,pre,a,b,h1,h2,h3,h4{font-family:verdana;font-size:9pt;line-height:18px;color:#a00000}
</style>
</head>
<?

$dbconnection=@mysql_connect("yourmysqlserver","mysqlaccount","mysqlpassword")

ordie("cannotconnecttodatabaseserver");

@mysql_select_db("yourdatabase")

ordie("<pstyle=font-size:9pt;font-family:verdana;color:#803333;font-weight:bold>NoDatabase,</p>");

$odbc_table="youroriginaltable";//TheoriginaltablenameinyourODBCdatabase

$mysql_table="yournewtable";//ThenewtablenameinyourMysqlDatabase.



?>

<bodybgcolor=#f0f0f0topmargin=0leftmargin=0text=#a00000>

<br>
<divstyle="font-size:24pt;font-family:times;font-weight:bold;color:#00a000">FieldsListofTwotables</div>
<hrsize=1color=#900000>

<?

$conn=odbc_connect("task","","");

$odbc_query="select*from".$odbc_table."where1=2";

$recordsid=odbc_exec($conn,$odbc_query);

$idcounts=odbc_num_fields($recordsid);

$fdlist1="";

for($i=1;$i<=$idcounts;$i++)

$fdlist1.=odbc_field_name($recordsid,$i).",";

echo"<div>Fd1=".$fdlist1;

$fdlist1=substr($fdlist1,0,strlen($fdlist1)-1);

$fdlist2="";


$sqlquery="select*from".$mysql_table."where1=2";

$records2=mysql_query($sqlquery);

$idcount2=mysql_num_fields($records2);



for($i=0;$i<$idcount2;$i++)

$fdlist2.=mysql_field_name($records2,$i).",";

echo"<div>FD2=".$fdlist2;

$fdlist2=substr($fdlist2,0,strlen($fdlist2)-1);

$fp=fopen("fdlist.txt","w");

fwrite($fp,$ctable);

fwrite($fp,"n");

fwrite($fp,$fdlist1);

fwrite($fp,"n");

fwrite($fp,$etable);

fwrite($fp,"n");

fwrite($fp,$fdlist2);

fclose($fp);

odbc_close($conn);

if($idcount2!=$idcounts){

echo"<hrsize=1color=#900000>".

"<divstyle=font-size:20pt;font-family:times;font-weight:bold>Thefieldsoftwotablesdoesntmatch";

echo"<br><br>ODBC_tableFields=".$idcounts;

echo"<br><br>MySQL_tableFields=".$idcount2;
}
?>


</body>
</html>

~~~~~~~~~~~~~~~~~~~
未完接(二)
~~~~~~~~~~~~~~~~~~~人们常说“成功孕育成功”,这种说法明显非常适合MySQL的情况。MySQL学习教程这个开源数据库号称在全世界有超过110万份的完全安装。
小女巫 该用户已被删除
沙发
发表于 2015-1-19 17:54:32 | 只看该作者
另一个是把SQL语句写到服务器端,就是所谓的SP(存储过程);
不帅 该用户已被删除
板凳
发表于 2015-2-4 13:46:02 | 只看该作者
是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。
谁可相欹 该用户已被删除
地板
发表于 2015-2-10 01:11:24 | 只看该作者
大侠们有推荐的书籍和学习方法写下吧。
爱飞 该用户已被删除
5#
发表于 2015-2-28 11:41:47 | 只看该作者
SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。
灵魂腐蚀 该用户已被删除
6#
 楼主| 发表于 2015-3-9 23:12:41 | 只看该作者
SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.
只想知道 该用户已被删除
7#
发表于 2015-3-23 18:02:19 | 只看该作者
对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 01:20

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表