以下是我用于从csv文件导入数据的查询,并且只忽略数据库中已存在的那些行(用于避免重复)。现在我想要得到的只是因为它们已经存在于DB中而被忽略的那些行的数量,请告诉我如何才能得到这个数据?
$con->query("LOAD DATA Local INFILE 'CSVFILEPATH' IGNORE INTO TABLE DUPLICATES FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' IGNORE 1 LINES")
答案 0 :(得分:0)
我看到的只有一个解决方案是计算表中的记录并与文件中的记录数进行比较。
简单查询以计算表中的记录数:
$q = $conn->query("SELECT COUNT(*) as cnt FROM DUPLICATES");
$f = $q->fetch();
$linesInTable = $f['cnt'];
要计算文件中的行数,可以使用shell命令。
Linux的:
$linesInFile = trim( `cat 'CSVFILEPATH'|wc -l` );
视窗:
$linesInFile = trim( `Find /V /C "" < CSVFILEPATH` );
现在计算重复的记录:
$duplicatedLines = $linesInFile - $linesInTable;
答案 1 :(得分:-1)
要计算表中的唯一总行数,可以使用SQL查询
SELECT COUNT(DISTINCT column_name) FROM table_name;