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

Leer un archivo de texto y transferir contenido a la base de datos mysql

Lo que puede estar buscando es la función incorporada de MySQL LOAD DATA INFILE para cargar un archivo de texto que contiene valores para una base de datos en una base de datos.

Ejemplo:

LOAD DATA INFILE 'data.txt' INTO TABLE my_table;

También puede especificar los delimitadores dentro de su archivo de texto, así:

LOAD DATA INFILE 'data.txt' INTO TABLE my_table FIELDS TERMINATED BY '|';

Actualización:

Aquí hay un ejemplo de trabajo completo, cargué un archivo de datos de prueba aquí y aquí está mi código PHP.

$string = file_get_contents("http://www.angelfire.com/ri2/DMX/data.txt", "r");
$myFile = "C:/path/to/myFile.txt";
$fh = fopen($myFile, 'w') or die("Could not open: " . mysql_error());
fwrite($fh, $string);
fclose($fh);

$sql = mysql_connect("localhost", "root", "password");
if (!$sql) {
    die("Could not connect: " . mysql_error());
}
mysql_select_db("my_database");
$result = mysql_query("LOAD DATA INFILE '$myFile'" .
                      " INTO TABLE test FIELDS TERMINATED BY '|'");
if (!$result) {
    die("Could not load. " . mysql_error());
}

Aquí el aspecto de la tabla antes de ejecutar mi código PHP:

mysql> select * from test;
+--------+-----------+------------+
| DataID | Name      | DOB        |
+--------+-----------+------------+
|    145 | Joe Blogs | 17/03/1954 |
+--------+-----------+------------+
1 row in set (0.00 sec)

Y aquí está el resultado después de:

mysql> select * from test;
+--------+-------------+------------+
| DataID | Name        | DOB        |
+--------+-------------+------------+
|    145 | Joe Blogs   | 17/03/1954 |
|    234 | Carl Jones  | 01/01/1925 |
|     98 | James Smith | 12/09/1998 |
|    234 | Paul Jones  | 19/07/1923 |
|    986 | Jim Smith   | 12/01/1976 |
+--------+-------------+------------+
5 rows in set (0.00 sec)