KISS principle: Sadece phpMyAdmin kullanmak? Bu, neredeyse kesinlikle kurulu. Değilse, install it.
Onun alma yeteneği muhteşem. Veritabanı çok büyük bir ihtimal varsa, bunu gziplemek. O büyük hala varsa, bir kaç parçaya o kadar ayırmayı deneyin. Ben tek bir büyük işlem olarak aktarmak gerekir şüpheliyim. Öyle mi?
Ilk yorumda açıklamadan sonra, işte gidiyor. Bu ne istediğinizi yapar, benim çok basit bir betik. Bir sorgu == bir satır: Bu ayırıcılar bir göz almaz hariç.
<link rel="stylesheet" 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);
?>
Ayrıca her sorgu ne kadar sürdü küçük bir istatistik verir. Bu PDO etrafında dayanıyor; Ben PDO PHP5.1 veya PHP5.2 tanıtıldı inanıyorum. Ben nedense İsterseniz mysql_*()
fonksiyonları ile doğrudan çalışmak için değiştirmek için önemsiz olması gerektiğini düşünüyorum.
Ve bir kez daha: evet, ben berbat biliyorum. Ama sürece o Me (tm) için çalışır gibi, ve muhtemelen sen ... :-)
Kodunu tamamlamak için, burada include/db.php
ve bir örnek vardır 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
?>
SQLite, MySQL ve PostgreSQL için örnek bağlantı dizeleri bulunuyor.