最佳实践:在PHP中导入mySQL文件;拆分查询

最佳实践:在PHP中导入mySQL文件;拆分查询,第1张

最佳实践:在PHP中导入mySQL文件拆分查询

这是一个内存友好的函数,该函数应该能够 在单个查询中拆分大文件,而无需一次打开整个文件

function SplitSQL($file, $delimiter = ';'){    set_time_limit(0);    if (is_file($file) === true)    {        $file = fopen($file, 'r');        if (is_resource($file) === true)        { $query = array(); while (feof($file) === false) {     $query[] = fgets($file);     if (preg_match('~' . preg_quote($delimiter, '~') . 's*$~iS', end($query)) === 1)     {         $query = trim(implode('', $query));         if (mysql_query($query) === false)         {  echo '<h3>ERROR: ' . $query . '</h3>' . "n";         }         else         {  echo '<h3>SUCCESS: ' . $query . '</h3>' . "n";         }         while (ob_get_level() > 0)         {  ob_end_flush();         }         flush();     }     if (is_string($query) === true)     {         $query = array();     } } return fclose($file);        }    }    return false;}

我在一个大型phpMyAdmin SQL转储上对其进行了测试,它工作得很好。


一些测试数据:

CREATE TABLE IF NOT EXISTS "test" (    "id" INTEGER PRIMARY KEY AUTOINCREMENT,    "name" TEXT,    "description" TEXT);BEGIN;    INSERT INTO "test" ("name", "description")    VALUES (";;;", "something for you mind; body; soul");COMMIT;UPDATE "test"    SET "name" = "; "    WHERe "id" = 1;

并分别输出:

SUCCESS: CREATE TABLE IF NOT EXISTS "test" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT, "name" TEXT, "description" TEXT );SUCCESS: BEGIN;SUCCESS: INSERT INTO "test" ("name", "description") VALUES (";;;", "something for you mind; body; soul");SUCCESS: COMMIT;SUCCESS: UPDATE "test" SET "name" = "; " WHERe "id" = 1;


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5011933.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存