Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tạo và nhập cơ sở dữ liệu mysql trên máy chủ chia sẻ trong php

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết nối từ xa MySQL không thành công với phương thức xác thực không xác định

  2. Mysql cách trả về các hàng ngay cả khi dữ liệu kết hợp trống

  3. Làm thế nào để thất bại hoặc gặp sự cố các phiên bản MySQL của bạn để kiểm tra

  4. Cảnh báo:mysqli_select_db () mong đợi chính xác 2 tham số, 1 tham số được cung cấp

  5. Câu lệnh where của tôi với hàm JSON_extract trên cột nullable được xác nhận khi giá trị của cột đó là NULL?