2008-09-15 14 views
6

Necesito hacer un volcado de una tabla en un servidor remoto, pero no puedo acceder al servidor directamente. El único acceso que tengo es a través de scripts PHP.instrucción MySQL que devuelve una instrucción SQL?

¿Hay alguna manera en que MySQL devolverá un comunicado

INSERT INTO `table_name` (`field1`, `field2`) VALUES ('a', 'b'), ('c', 'd') 

, como lo mysqldump volverá? No tengo acceso a phpMyAdmin, y preferiblemente no quiero usar exec, system o passthru.

Ver this question para otro método de exportación

Respuesta

0

Si puede utilizar php-scripts en el servidor i recomendaría phpmyadmin. Entonces puedes hacer esto desde la interfaz web.

+0

Me ganaste la recomendación phpMyAdmin! –

0

Debería consultar PHPMyAdmin, es una herramienta de administración MySQL basada en php. Admite copias de seguridad y recuperación para la base de datos, así como una 'GUI' para el servidor de la base de datos. Funciona muy bien.

0

Este

select 'insert into table table_name (field1, field2) values' 
     || table_name.field1 || ', ' || table_field2 || ');' 
from table_name 

debería empezar. Reemplazar || con el operador de concatenación de cadenas para su sabor db. Si field1 o field2 son cadenas, tendrá que encontrar algún truco para cotizar/escapar.

0

Aquí hay un enfoque que genera muchas instrucciones de consulta separadas. También puede usar implode para combinar las cadenas de manera más eficiente, pero esto es más fácil de leer para los principiantes y, derivado de esto, puede llegar a un millón de otros enfoques.

$results = mysql_query("SELECT * FROM `table_name`"); 
while($row = mysql_fetch_assoc($results)) { 

    $query = "INSERT INTO `table_name` "; 
    $fields = '('; 
    $values = '('; 

    foreach($row as $field=>$value) { 
     $fields .= "'".$field."',"; 
     $values .= "'".mysql_escape_string($value)."',"; 
    } 

    //drop the last comma off 
    $fields = substr($fields,0,-1); 
    $values = substr($values,0,-1); 

    $query .= $fields . " VALUES " . $values; 

    //your final result 
    echo $query; 
} 

A ver si eso le ayudará a comenzar

+0

Mi problema con esta solución es que no devuelve una instrucción INSERT precisa. Por ejemplo, incluirá números enteros en comillas simples. – Jrgns

+0

¿Devuelve números enteros entre comillas simples o con fosas de acento (')? –

+0

Esta línea: $ values. = "'" .mysql_escape_string ($ value). "',"; encierra TODOS los valores en comillas simples ('). En general, no es un problema, pero no es tan preciso como lo haría la función de putcsv de PHP. – Jrgns

Cuestiones relacionadas