我有2,000,000行的文本文件,并希望在数据库行中插入每一行,因此,使用php文件将2,000,000条记录插入sql server。最快的方法是什么?
进行测试我正在使用此代码:
@RestController
@ConditionalOnProperty(prefix="properties",name = "enabled")
public class Controller{
public String getSomething() {
return "Something";
}
}
但是,这需要很多时间。这个查询可以在几秒钟内执行吗?
谢谢,
答案 0 :(得分:3)
答案 1 :(得分:2)
而不是单独运行每个查询。将查询连接在一起并立即运行它。
for ( $i=1 ; $i<=2000000 ; $i++)
{
$sql .= "INSERT INTO BlastSequenceDim (Seq_id) VALUES ('$i');";
}
$stmt = sqlsrv_query( $conn, $sql);
if( $stmt === false )
{
die( print_r( sqlsrv_errors(), true));
}
答案 2 :(得分:0)
通常瓶颈是PHP没有运行多线程。这意味着在您的情况下,一个进程按顺序读取文件并逐行插入,即使您的服务器/ PC有8个或更多核心。
我遇到了同样的问题,我必须在memcache键中插入很多值,然后用php pthread解决了这个问题。
肯定会有更多的工作,但是当它是一个重复的任务时[就像我的情况一样]那么绝对值得用pthread
来实现它。
作为提示,我建议启动线程的总量不应该是>比 number_of_cpu_cores x 1.5。
只有一个小问题:如何协调文本文件的读取。在这里,我会考虑将两个数字传递给每个线程:
X
X
的偏移量,以便跳过其他线程读取的行。你会对性能提升感到惊讶!将它与你问题的其他答案结合起来将是无与伦比的......