我想知道如何在不将行加载到数据库的情况下检查 MYSQL .sql 转储文件中是否存在一行。我还想检查 3 个字段。 FieldA、FieldB、FieldC 和 userinfo1、userinfo2、userinfo3,所有这些都是字符串。文件名为 database1.sql,存储在 FTP 服务器上。有没有办法将文件留在另一台服务器上而不将其导入另一个数据库?
最佳答案
好的,首先,如果文件不在运行 PHP 的服务器上,就无法对其进行任何处理。但是,您可以使用 PHP 脚本登录 FTP 并自动下载和处理文件。
对于SQL的处理,最简单的方法是逐行读取文件,先用strpos("INSERT INTO .....)检查开头的查询类型是否正确(insert, update .. . 不管它是什么,然后使用类似的东西:
https://code.google.com/p/php-sql-parser/wiki/ParserManual 遍历生成的数组并比较值。这相当简单易行。然而,该库会带来一些开销,因此如果速度有问题或文件非常大,您将需要一些复杂的 preg_match 正则表达式来获取必要的值并对它们进行校验和。之后,您可以将它们存储在一个临时数组中,并每次检查这个校验和数组以匹配您是否已经拥有这些值...
关于PHP 检查 .sql 转储文件中是否存在行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15227617/