我在txt文件中有一个products-name列表。但是,文件很大(4,8GB ++)所以是的,这是很多的话。除了产品名称,我还想添加一些额外的信息,如md5哈希,时间和随机ID。
这样做的最佳解决方案是什么?创建一个逐行阅读的PHP脚本似乎需要永远。
有什么好的建议吗?
答案 0 :(得分:0)
是的,您可以使用php读取文本文件并将其传递给数据库
$string = file_get_contents("YOURTEXTFILE", "r");
$myFile = "PATH/TO/YOUR/TEXTFILE";
$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("YOURDB");
$result = mysql_query("LOAD DATA INFILE '$myFile'" .
" INTO TABLE test FIELDS TERMINATED BY '|'");
if (!$result) {
die("Could not load. " . mysql_error());
}
,结果将是这样的
+--------+-------------+------------+
| ID | Name | time |
+--------+-------------+------------+
| 145 | line1 | 23:59 |
| 234 | line2 | 00:00 |
+--------+-------------+------------+
答案 1 :(得分:0)
我已经考虑过你的问题,我以前使用过这个解决方案,但由于文件的大小,我不确定它是否适合你。我暂时把它留在这里,以防它对其他人有用。
假设你的product.txt文件只有productID,你可以做任何事情:
基本上改变
PID1
PID2
到
(PID1),
(PID2),
然后通过一些简单的编辑使文件读取
INSERT INTO dTable(ColName) VALUES
(PID1),
(PID2);
最后导入
mysql -uUser -p DATABASE < filename.sql
这是一种基本方法,但应该没有太多麻烦。在SQL之后添加您想要的其他数据将更容易。
答案 2 :(得分:0)
如果您使用的是mysql且该文件是CSV类型,那么您可以使用LOAD DATA INFILE
。
如果您的CSV格式正确,则根本不需要PHP。
如果是这种情况,请告诉我,我可以添加更多细节。