2011-07-31 38 views
4

我有一个数以百万计的字符串非常大的.txt文件,它有分离符号。如何将大的.txt文件传输到MySQL?

那么,将所有这些字符串转移到数据库的最简单方法是什么?它是PHP打开并采取爆炸每个字符串并将其插入数据库?

文件是2 GB。

+0

听起来正确。 –

+1

您可以搜索/替换您的文件(使用'sed'或'awk'或'perl')到SQL脚本中吗? –

+0

你可以看看它是否可以使用PHPMyAdmin导入。如果没有,您可以使用PHP创建一个可导入的文件。这可能比只按照记录导入记录更好。 – GolezTrol

回答

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); 

另一种解决方案报价,但日本央行的解决方案是比这更好的。

0

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

你可能会需要生成,因为DB限制的多重插入查询(例如,在MySQL的max_allowed_packet

如果你没有足够的可用内存,你需要阅读更多步骤的文件(由大块字节)。你可以在生成一些多重插入查询之后。

fopenfread功能可能会有所帮助。

相关问题