Convertir CSV a MySQL
Simplemente se ejecuta el siguiente querry:
load data local infile 'c:/personas.csv' into table 'Mi_DB'.'personas' fields terminated by ',' lines terminated by '\n' (id,nombre,descripcion,otros);
Recuerda que debes tener una base de datos llamada Mi_DB, en donde existe una tabla personas con los campos id,nombre,descripcion y otros. Ah y claro tu archivo CSV que en este caso está en c:\ y se llama Mi_DB.csv.Si –local-infile está deshabilitado en el servidor Web, nos mostrará un mensaje como este:
ERROR 1148: The used command is not allowed with this MySQL version
Así que lo más conveniente sería intentarlo con PHP, el asunto sería algo diferente, y aquí les coloco el código, que se que es lo que les interesa:
<?
// Parámetros de conexión
include "database_connection.php";
// CSV a cargar
$file = file ('./ip-to-country.csv');
//Proceso de transformación
for($i=0; $i<sizeof($file); $i++) {
$line = trim($fcontents[$i]);
$array = explode(",", $line);
$import_sql = "insert into iptable values (".
implode(",", $array) .")";
mysql_query($import_sql, $conn);
echo $sql ."<br>\n";
if(mysql_error()) {
echo mysql_error() ."<br>\n";
}
}
?>
Por otro lado, si lo que deseamos es que la función simplemente nos devuelva una variable de tipo cadena con todas las inserciones para realizarlas todas de una vez posteriormente, tendríamos lo siguiente:
//Averiguar el tipo de dato
function colum2type($data)
{
$data = trim(str_replace("\"","",$data));
if (is_numeric($data))
return $data;
else
return "'".$data."'";
}
//$fileName es la ruta con el nombre del
//archivo .csv
function csv2sql($fileName)
{
$file = file ($fileName);
$import_sql = "INSERT INTO cierrediariostb VALUES";
$coma =","; //Auxiliar para concatenar
for($i=0; $i<sizeof($file); $i++) {
$line = trim($file[$i]);
$array = explode(",", $line);
//Asigna 'valor' si es cadena
for($counter = 0; $counter < count($array); $counter++)
$array[$counter] = colum2type($array[$counter]);
//Ya que al final del query no debe haber coma
if ($i==(sizeof($file)-1)) $coma ="";
$import_sql .= "(".implode(",", $array) .")".$coma;
}
return $import_sql;
}
mysql_query(csv2sql('./ip-country.csv'), $DBConn)
or die("Error en la converción: " . mysql_error());
