Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Buat dan impor database mysql pada shared host di php

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengetahui status replikasi MySQL menggunakan kueri pemilihan?

  2. Koneksi Rusak di mysql C++

  3. Dapatkan total bidang yang dikelompokkan berdasarkan tanggal dan bidang lain

  4. ER_FK_NO_INDEX_PARENT:Gagal menambahkan batasan kunci asing. Tidak ada indeks untuk kendala

  5. Standar / konvensi nama kolom MySQL