nguyên tắc KISS :chỉ sử dụng phpMyAdmin? Nó gần như chắc chắn đã được cài đặt. Nếu không, hãy cài đặt nó .
Khả năng nhập khẩu của nó là tuyệt vời. Nếu cơ sở dữ liệu của bạn quá lớn, hãy giải nén nó. Nếu nó vẫn còn to, hãy thử chia nó thành một vài phần. Tôi nghi ngờ bạn cần phải chuyển nó như một giao dịch lớn duy nhất. Bạn có không?
Sau lời giải thích trong bình luận đầu tiên, tốt, đây là điều. Đây là tập lệnh rất đơn giản của tôi mà bạn muốn. Ngoại trừ nó không xem xét các dấu phân cách:một truy vấn ==một dòng.
<link href="style/contents.css"/>
<?
function timesanitize($v) {
if ($v > 0)
return round($v, 4);
else
return 0;
}
$startmt = microtime();
include_once 'include/db.php';
$f = fopen("db.sql","r");
echo dbGetEngine() . "<br>";
echo "<ul>";
do {
$l = rtrim(fgets($f));
if (strlen($l) == 0)
continue;
if (substr($l, 0, 1) == '#')
continue;
$l = str_replace(
array("\\n"),
array("\n"),
$l);
if (dbGetEngine() == "pgsql")
$l = str_replace(
array("IF NOT EXISTS", "LONGBLOB"),
array("", "TEXT"),
$l);
try {
echo "<li>".nl2br(htmlspecialchars($l));
$mt = microtime();
$db->query($l);
echo "<ul><li>ok - " . timesanitize(microtime() - $mt) . "</ul>";
} catch (PDOException $e) {
echo "<ul><li>".$e->getMessage() . "</ul>";
}
} while (!feof($f));
fclose($f);
echo 'total: ' . timesanitize(microtime() - $startmt);
?>
Nó cũng xuất ra một thống kê nhỏ về thời gian mỗi truy vấn mất bao lâu. Nó dựa trên PDO; Tôi tin rằng PDO đã được giới thiệu trong PHP5.1 hoặc PHP5.2. Tôi nghĩ rằng việc sửa đổi nó để hoạt động trực tiếp với mysql_*()
sẽ là điều nhỏ nhặt các chức năng, nếu vì lý do nào đó bạn thích điều đó.
Và một lần nữa:vâng, tôi biết điều đó thật tệ. Nhưng miễn là nó phù hợp với tôi (tm), và có thể là bạn ... :-)
Để hoàn thành mã, đây là include/db.php
và một mẫu include/config.php
:
include/db.php
:
<?
include_once 'include/config.php';
try {
$attribs =
array(
PDO::ATTR_PERSISTENT => $config['db']['persistent'],
PDO::ATTR_ERRMODE => $config['db']['errormode']
);
$db = new PDO(
$config['db']['uri'],
$config['db']['user'],
$config['db']['pass'],
$attribs
);
$db->query("SET NAMES 'utf8'");
$db->query("SET CHARACTER SET 'utf8'");
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
function dbGetEngine() {
global $config;
return substr($config['db']['uri'], 0, strpos($config['db']['uri'], ':'));
}
?>
include/config.php
:
<?
//$config['db']['uri'] = 'sqlite:' . realpath('.') . '/site.db'; // PDO's database access URI
$config['db']['uri'] = 'mysql:host=localhost;dbname=sitedb'; // server should be : 195.78.32.7
//$config['db']['uri'] = 'pgsql:host=localhost;dbname=sitedb';
$config['db']['user'] = 'user_goes_here'; // database username
$config['db']['pass'] = 'pass_goes_here'; // database password
$config['db']['persistent'] = false; // should the connection be persistent
$config['db']['errormode'] = PDO::ERRMODE_EXCEPTION; // PDO's error mode
?>
Bao gồm các chuỗi kết nối mẫu cho SQLite, MySQL và PostgreSQL.