求一高效分析SQL语句的算法

ice_berg16 2005-10-29 11:46:57
可以将备份的SQL文件解析成SQL语句数组就可以,
PHPMYADMIN的感觉有点太慢了。
...全文
228 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ice_berg16 2005-11-01
  • 打赏
  • 举报
回复
暂时使用;[\r\n]+来处理,结了。
xuzuning 2005-11-01
  • 打赏
  • 举报
回复
如果你的sql文件是由数据库辅助程序产生的就不会,因为已经做了转义
否则是有可能的。
其实判断是否被错误截断了也是很简单的:
遍历结果数组,统计“'”出现的次数是否为奇数,是则误截断了。补上并将下一元素连接上来
或者这样判断,通常在sql文件中出现的sql指令大多都是create、insert。他们都以“)”结束,所以判断数组元素的最后一个字符是否为“)”也是可行的
ice_berg16 2005-11-01
  • 打赏
  • 举报
回复
读取sql文件,按“;[\r\n]+”分割成数组

----------------------
这样如果是字符串中包含了";[\r\n]"不是要被从中间断开?
ice_berg16 2005-10-31
  • 打赏
  • 举报
回复
比如有一个 db.sql文件,
我有一个上传数据库文件的表单,
用户上传后,程序在后台分析该SQL文件,并将结构和数据插入到数据库当中,
就是这样,PHPMYADMIN中就有这个功能。
但是WEB界面就不能用mysql db < db.sql -u root -ppassword这样的命令行。
一般虚拟主机也不会提供给你命令行功能吧,所以想通过WEB界面解决这个问题。
xuzuning 2005-10-31
  • 打赏
  • 举报
回复
不是很明白!举个例子看看
ice_berg16 2005-10-31
  • 打赏
  • 举报
回复
我做的是WEB界面,如果服务器不是自己的肯定不能用命令行了。
也不是CVS,就是SQL语句的文件。想保存成数组
ipeak 2005-10-31
  • 打赏
  • 举报
回复
我两天前也面临同样的问题,找到这样一个程序,我还没有测试,请到家帮忙看看。

导入的程序如下:

< ?
if($table==\"\")exit();
mysql_connect(\"localhost\",\"name\",\"password\");
mysql_select_db(\"database\");
$message = file(\"$table.txt\");
echo $numfields = chop($message[0]);
for($k=1;$k< count($message);$k+=($numfields+1))
{
$value=\"\";
for ($i=$k;$i< ($k+$numfields-1);$i++)
{
$tmp = str_replace(\"&&php2000mysqlreturn&&\",\"\r\n\",chop($message[$i]));
$value .= \"\'\".addslashes($tmp).\"\',\";
}
$tmp = str_replace(\"&&php2000mysqlreturn&&\",\"\r\n\",chop($message[$k+$numfields-1]));
$value .= \"\'\".$tmp.\"\'\";
$query = \"insert into $table values (\".$value.\")\";
echo mysql_error();
mysql_query($query);
echo $k.\" \";
}
echo \"ok\";
?>

使用方法和可能的问题!
1 导入时 file()函数可能会有问题(我的10M的数据没出现问题),可以改为 fopen()然后没次读一行!!
2 导入,导出都需要用 ftp 操作,也就是导出后,用 ftp 把数据转到本机,导入时先用ftp转移数据到服务器!
xuzuning 2005-10-31
  • 打赏
  • 举报
回复
读取sql文件,按“;[\r\n]+”分割成数组
dh20156 2005-10-30
  • 打赏
  • 举报
回复
还原为什么要将备份的SQL文件解析成SQL语句数组呢?
关注。
zhiin1 2005-10-30
  • 打赏
  • 举报
回复
不可以执行 mysql -u root -p << aa.sql 吗?
dreamasp 2005-10-29
  • 打赏
  • 举报
回复
我也想知道
up
xuzuning 2005-10-29
  • 打赏
  • 举报
回复
csv格式 ?
ice_berg16 2005-10-29
  • 打赏
  • 举报
回复
preg_split怎么分的,有代码吗?
ice_berg16 2005-10-29
  • 打赏
  • 举报
回复
现在不是备份,是还原,所以我想将SQL语句分析成数组,再插入。
-神仙- 2005-10-29
  • 打赏
  • 举报
回复
不能调用mysql_dump么
helloyou0 2005-10-29
  • 打赏
  • 举报
回复
我用的preg_split分割开

发现用--注释的东西不用去掉,mysql_query会自动忽略

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧