sql >> Base de Datos >  >> RDS >> Mysql

Cree e importe la base de datos mysql en el host compartido en php

Principio KISS :solo usa phpMyAdmin? Es casi seguro que esté instalado. Si no es así, instalarlo .

Su capacidad de importación es magnífica. Si su base de datos es por casualidad demasiado grande, gzip. Si todavía es demasiado grande, intente dividirlo en algunas partes. Dudo que necesite transferirlo como una sola gran transacción. ¿Tú?

Después de la explicación en el primer comentario, bueno, aquí va. Este es mi script muy simplista que hace lo que quieres. Excepto que no echa un vistazo a los separadores:una consulta ==una línea.

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

También genera una pequeña estadística de cuánto tiempo tomó cada consulta. Se basa en PDO; Creo que PDO se introdujo en PHP5.1 o PHP5.2. Creo que debería ser trivial modificarlo para que funcione directamente con mysql_*() funciones, si por alguna razón lo prefiere.

Y una vez más:sí, sé que apesta. Pero mientras funcione para mí (tm), y posiblemente para ti... :-)

Para completar el código, aquí están include/db.php y un ejemplo 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

?>

Se incluyen cadenas de conexión de muestra para SQLite, MySQL y PostgreSQL.