Những gì bạn có thể đang tìm là hàm tích hợp sẵn của MySQL LOAD DATA INFILE
để tải tệp văn bản chứa các giá trị cho cơ sở dữ liệu vào cơ sở dữ liệu.
Ví dụ:
LOAD DATA INFILE 'data.txt' INTO TABLE my_table;
Bạn cũng có thể chỉ định các dấu phân cách bên trong tệp văn bản của mình, như sau:
LOAD DATA INFILE 'data.txt' INTO TABLE my_table FIELDS TERMINATED BY '|';
Cập nhật:
Đây là một ví dụ hoạt động đầy đủ, tôi đã tải lên tệp dữ liệu thử nghiệm tại đây và đây là mã PHP của tôi.
$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());
}
Đây là bảng trông như thế nào trước khi chạy mã PHP của tôi:
mysql> select * from test;
+--------+-----------+------------+
| DataID | Name | DOB |
+--------+-----------+------------+
| 145 | Joe Blogs | 17/03/1954 |
+--------+-----------+------------+
1 row in set (0.00 sec)
Và đây là kết quả sau:
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)