我用的preg_split分割开发现用--注释的东西不用去掉,mysql_query会自动忽略

解决方案 »

  1.   

    现在不是备份,是还原,所以我想将SQL语句分析成数组,再插入。
      

  2.   

    preg_split怎么分的,有代码吗?
      

  3.   

    不可以执行 mysql -u root -p << aa.sql 吗?
      

  4.   

    还原为什么要将备份的SQL文件解析成SQL语句数组呢?
    关注。
      

  5.   

    我做的是WEB界面,如果服务器不是自己的肯定不能用命令行了。
    也不是CVS,就是SQL语句的文件。想保存成数组
      

  6.   

    比如有一个 db.sql文件,
    我有一个上传数据库文件的表单,
    用户上传后,程序在后台分析该SQL文件,并将结构和数据插入到数据库当中,
    就是这样,PHPMYADMIN中就有这个功能。
    但是WEB界面就不能用mysql db < db.sql -u root -ppassword这样的命令行。
    一般虚拟主机也不会提供给你命令行功能吧,所以想通过WEB界面解决这个问题。
      

  7.   

    读取sql文件,按“;[\r\n]+”分割成数组
      

  8.   

    我两天前也面临同样的问题,找到这样一个程序,我还没有测试,请到家帮忙看看。导入的程序如下:< ?
    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转移数据到服务器!
      

  9.   

    读取sql文件,按“;[\r\n]+”分割成数组----------------------
    这样如果是字符串中包含了";[\r\n]"不是要被从中间断开?
      

  10.   

    如果你的sql文件是由数据库辅助程序产生的就不会,因为已经做了转义
    否则是有可能的。
    其实判断是否被错误截断了也是很简单的:
    遍历结果数组,统计“'”出现的次数是否为奇数,是则误截断了。补上并将下一元素连接上来
    或者这样判断,通常在sql文件中出现的sql指令大多都是create、insert。他们都以“)”结束,所以判断数组元素的最后一个字符是否为“)”也是可行的