本地软件操作服务器上的数据库文件夹,mysql 数据库操作软件。实现把本地的一个数据库上传到一个网络服务器上的数据库。哪个软件可以实现?…

2011-06-21 回答

一、一般步骤

1、用phpadmin生成csv格式文件

以php+mysql模式建立个人主页的读者,在自己的机器上都有php+mysql环境吧在这个环境下,用phpadmin生成以分号为分隔符的dotmud.csv文件。

2、将dotmud.csv文件通过ftp上传到服务器。

3、上传data.php程序(程序附后),在浏览器调用data.php程序,将dotmud.csv文件的内容加入到数据库。

二、特殊处理

一般的数据,通过上述步骤,基本可以顺利上传。但对于包含特殊字符的数据(比如数据库记录中包含换行符、单引号、分号),就要做些特殊的处理。

1、换行符的处理

php的fgetcsv()函数以换行符作为每行的结束标志。如果mysql数据表的记录包含换行符,fgetcsv()就不能完整读取记录行。

笔者的解决方法是修改phpadmin的lib.inc.php3文件(读者也可以不修改phpadmin文件,而是用其他方法直接加工phpadmin生成的dotmud.csv文件,达到同样的效果)的get_table_csv()函数:

在 $schema_insert=ereg_replace($sep.”$”,””,$schema_insert) 行后加入如下命令行

$schema_insert=ereg_replace(“rn”,”`return`”,$schema_insert)

将换行符转换为不容易出现的换行标识串`return`(读者可根据自己数据的特点设置独特的换行标识串),再在data.php程序中加一行命令$data[$i]=ereg_replace(“`return`”,”rn”,$data[$i]),用来将换行标识串还原成换行符。

2、分隔符的处理

如果mysql记录行恰好包含csv分隔符,fgetcsv()进行分隔处理时就会出现问题。

笔者仍然是通过修改lib.inc.php3文件解决的。

在get_table_csv()的$schema_insert=”$row[$j]”.$sep行前加一行

$row[$j]=ereg_replace($sep,”`return_sep`”,$row[$j]) 命令,将分隔符转为分隔标识串`return_sep`,同时在data.php中用命令行 $data[$i]=ereg_replace(“`return_sep`”,”;”,$data[$i]) 进行还原处理。

3、单引号的处理

mysql的sql语句行对单引号有特殊的定义,如果直接提交含单引号的sql语句,就会出错。这种情况需要加上转义符。在data.php中加一行 $data[$i]=ereg_replace(“‘”,”‘”,$data[$i]) 就可解决。

另外,在数据记录特别多的的情况下,dotmud.csv文件可能比较大,如果在服务器的限定时间内不能执行完data.php程序,就需要按行分拆dotmud.csv。如笔者有个7000行的dotmud.csv文件,在自己的机器上执行到600行就提示超时,便拆成10个文件上传到全路互联(www.wayall.com),结果对方的服务器速度快,每个文件的处理时间还不到1秒,而php默认的限定执行时间可是30秒啊!看来我做的分拆实属多余。

以上方法解决了数据库内容的上传问题。对于数据库结构的上传,只要稍微修改一下data.php程序就可实现。其实,如果库结构比较简单,用phpadmin更方便。

文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树首页概览31412 人正在系统学习中 相关资源:免费的linux操作软件SecureCRT.zip-其它工具类资源-CSDN文库

来源:weixin_39668282

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年7月1日
下一篇 2021年7月1日

相关推荐