查找mysql

时间:2017-01-11 12:59:31

标签: php mysql

我正在尝试设置和应用程序以从CSV文件导入电子邮件。但是我希望在插入之前确保表中没有电子邮件。目前,该表包含800,000条记录,我使用PHP循环到

PHP for loop

foreach ($variable as $key => $value) {
#mysql record check
 }

这似乎效率低下。我考虑过使用

PHP in_array

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

但这需要很长时间来处理结果并使用大量系统资源。

是否有更好,更简单的方法来查找多条记录?

我想在PHP中这样做只是因为除了CSV我还想使用相同的脚本从gContacts和Hotmail导入。无论用户选择哪种方法,都要加载数组并执行插入,只是为了简单起见。

1 个答案:

答案 0 :(得分:1)

请注意,这是对车轮的重新设计并且读取csv-> loop->插入比文件中的LOAD DATA至少慢10倍

如果您担心重复项,请使用IGNORE关键字。

LOAD DATA LOCAL INFILE 'myfile.csv' 
IGNORE INTO TABLE my_table FIELDS TERMINATED BY ',' 
 ENCLOSED BY '\"' 
 LINES TERMINATED BY '\r\n' 
 IGNORE 1 LINES  /* optional if you have a header */

如果您真的想在PHP中执行此操作,请创建一个执行上述

的预准备语句
stmt = $dbh->prepare($q);
$stmt->execute();