如何将大.text文件传输到MySQL?

时间:2011-07-31 22:11:46

标签: php mysql

我有一个非常大的.txt文件,包含数百万个字符串,并且有分离符号。

那么,将所有这些字符串传输到数据库的最简单方法是什么?它是PHP fopen并使每个字符串爆炸并将其插入数据库吗?

文件是2 GB。

3 个答案:

答案 0 :(得分:8)

使用phpmyadmin为您生成命令,即:

LOAD DATA LOCAL INFILE 'input_file' INTO TABLE `tablename` FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n'

引自http://vegdave.wordpress.com/2007/05/19/import-a-csv-file-to-mysql-via-phpmyadmin/

答案 1 :(得分:1)

$mysql = mysql_connect("localhost", "user", "password");
mysql_select_db("database", $mysql);
$filename = "file.txt";
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle);
$array = explode('[separator]', $contents);

foreach ($array as $line)
{
    mysql_query("INSERT INTO table VALUES (".mysql_real_escape_string($line).")", $mysql);
}
mysql_close($mysql);

另一种解决方案,但是boj'解决方案比这更好。

答案 2 :(得分:0)

这取决于您在机器上可用的内存量。如果您不受RAM大小的限制,您可以尝试读取整个文件,将其分解为数组并一次性生成插入查询。

由于数据库限制(例如mySQL中的max_allowed_packet),您可能需要生成多个插入查询

如果没有足够的可用内存,则需要以更多步骤(按字节块)读取文件。您可以在生成一些多个插入查询之后。

fopenfread功能可能会有所帮助。