Prinsip KISS :hanya menggunakan phpMyAdmin? Hampir pasti terpasang. Jika tidak, instal .
Kemampuan impornya luar biasa. Jika database Anda terlalu besar, gzip. Jika masih terlalu besar, coba bagi menjadi beberapa bagian. Saya ragu Anda perlu mentransfernya sebagai satu transaksi besar. Apakah kamu?
Setelah penjelasan di komentar pertama, ini dia. Ini adalah skrip saya yang sangat sederhana yang melakukan apa yang Anda inginkan. Kecuali itu tidak melihat pemisah:satu kueri ==satu baris.
<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);
?>
Ini juga menampilkan statistik kecil tentang berapa lama waktu yang dibutuhkan setiap kueri. Ini berbasis di sekitar PDO; Saya percaya PDO diperkenalkan di PHP5.1 atau PHP5.2. Saya pikir seharusnya sepele untuk memodifikasinya agar berfungsi secara langsung dengan mysql_*()
fungsi, jika karena alasan tertentu Anda lebih suka itu.
Dan sekali lagi:ya, saya tahu ini menyebalkan. Tapi selama Itu Bekerja Untuk Saya (tm), dan mungkin Anda... :-)
Untuk melengkapi kodenya, berikut include/db.php
dan contoh 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
?>
Termasuk contoh string koneksi untuk SQLite, MySQL, dan PostgreSQL.