PHP 检查 .sql 转储文件中是否存在行

标签 php mysql

我想知道如何在不将行加载到数据库的情况下检查 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/

相关文章:

php - 是否可以使用 Doctrine 2 扩展模型?

php - 需要 "approve post if 10 people like it"功能背后的逻辑支持

mysql - 同时批量插入父/子

c# - 将PHP解密AES-256-CBC移植到C#

php - 查询所有没有API的产品,在Woocommerce中使用wc_get_products

php - 存储为成员变量的调用回调

java - 解决 Java 中时间错误的错误格式?

c# - 在 C# 中使用 iTextSharp 和 asp 图像调整数据库中的图像大小

php - 计算具有许多不同参数的表中的行数

java - 什么 PHP 框架与 Apache Wicket 最相似?