Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Utwórz i zaimportuj bazę danych mysql na współdzielonym hoście w php

Zasada KISS :wystarczy użyć phpMyAdmin? Prawie na pewno jest zainstalowany. Jeśli tak nie jest, zainstaluj go .

Jego możliwości importowe są wspaniałe. Jeśli Twoja baza danych jest przypadkiem zbyt duża, zgzipuj ją. Jeśli nadal jest za duży, spróbuj podzielić go na kilka kawałków. Wątpię, czy musisz przenieść to jako jedną dużą transakcję. Czy ty?

Po wyjaśnieniu w pierwszym komentarzu, cóż, zaczyna się. To jest mój bardzo uproszczony skrypt, który robi to, co chcesz. Tyle że nie zwraca uwagi na separatory:jedno zapytanie ==jedna linia.

<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);
?>

Wyprowadza również niewielką statystykę dotyczącą czasu trwania każdego zapytania. Opiera się na PDO; Uważam, że PDO zostało wprowadzone w PHP5.1 lub PHP5.2. Myślę, że zmodyfikowanie go tak, aby działał bezpośrednio z mysql_*(), powinno być trywialne funkcje, jeśli z jakiegoś powodu wolisz to.

I jeszcze raz:tak, wiem, że to jest do bani. Ale tak długo, jak to działa dla mnie (tm) i prawdopodobnie dla Ciebie... :-)

Aby uzupełnić kod, oto include/db.php i przykładowy 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

?>

Dołączone są przykładowe parametry połączenia dla SQLite, MySQL i 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. Włącz Pythona, aby połączyć się z MySQL przez tunelowanie SSH

  2. Migawka woluminu EBS używanego do replikacji

  3. codeigniter 3.1 PDO mysql Numer błędu:3D000/1046 Nie wybrano bazy danych

  4. znaki specjalne w zapytaniu sql

  5. Jak odzyskać/odtworzyć domyślną bazę danych „mysql” mysql