将产品名称输入数据库

时间:2013-03-16 21:14:43

标签: php

我在txt文件中有一个products-name列表。但是,文件很大(4,8GB ++)所以是的,这是很多的话。除了产品名称,我还想添加一些额外的信息,如md5哈希,时间和随机ID。

这样做的最佳解决方案是什么?创建一个逐行阅读的PHP脚本似乎需要永远。

有什么好的建议吗?

3 个答案:

答案 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,你可以做任何事情:

  1. 更改要用括号括起来的每一行(这可以通过为执行查找/替换NEWLINE(通常为 \ n ),\ n()来实现
  2. 然后在顶部放置一个查询;并确保文件末尾关闭有效查询
  3. 使用mysql导入,如任何mysqldump
  4. 基本上改变

    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。

如果是这种情况,请告诉我,我可以添加更多细节。