Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将产品名称输入数据库_Php - Fatal编程技术网

Php 将产品名称输入数据库

Php 将产品名称输入数据库,php,Php,我在一个txt文件中有一个产品名称列表。然而,这个文件是巨大的(4,8GB++),所以是的,它有很多单词。除了产品名称之外,我还想添加一些附加信息,如md5哈希、时间和随机ID 这样做的最佳解决方案是什么?创建一个逐行阅读的PHP脚本似乎需要花费很长时间 有什么好的建议吗 是的,您可以使用php读取文本文件并将其传递到数据库 $string = file_get_contents("YOURTEXTFILE", "r"); $myFile = "PATH/TO/YOUR/TEXTFILE"; $

我在一个txt文件中有一个产品名称列表。然而,这个文件是巨大的(4,8GB++),所以是的,它有很多单词。除了产品名称之外,我还想添加一些附加信息,如md5哈希、时间和随机ID

这样做的最佳解决方案是什么?创建一个逐行阅读的PHP脚本似乎需要花费很长时间


有什么好的建议吗

是的,您可以使用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      |
+--------+-------------+------------+

我已经对您的问题进行了更多的思考,我以前使用过此解决方案,但由于文件的大小,我不确定它是否适用于您。我暂时把它放在这里,以防对别人有用

假设您的product.txt文件只有ProductID而没有其他内容,您可以:

  • 将每一行更改为用括号括起来(这可以通过查找/替换的换行符(通常是\n)来实现,\n(
  • 然后在顶部放置一个查询;并确保文件结尾关闭了一个有效的查询
  • 像任何mysqldump一样使用mysql导入
  • 根本改变

    PID1
    PID2
    

    然后通过一些简单的编辑使文件被读取

    INSERT INTO dTable(ColName) VALUES
    (PID1),
    (PID2);
    
    最后是进口

    mysql -uUser -p DATABASE < filename.sql
    
    mysql-uUser-p数据库

    这是一个基本的方法,但应该不会太麻烦。以后在SQL中添加所需的其余数据会更简单。

    如果您使用的是mysql,并且文件是CSV类型,则可以使用
    加载数据填充

    如果您有一个格式良好的CSV,那么根本不需要PHP


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

    不确定您是否计划将随机ID用于产品代码,但如果是,我不会,因为您可能会遇到冲突。慢慢来。4GB文件将需要大量时间逐行迭代。我将使用随机代码,以及日期、时间信息等,因此不会出现崩溃。我还可以将其与单词的长度组合或进行哈希运算。将数据加载到db MySQL/PostgreSQL需要约40分钟。那么,如果我想将单词与ID一起进行哈希运算,该怎么办?要创建uniq哈希。。。。如果为false==?
    mysql -uUser -p DATABASE < filename.sql