2013-03-05 83 views
1

我想知道如何檢查一個MYSQL .sql轉儲文件中是否存在一行,而無需將其加載到數據庫中。我也想檢查3個領域。 FieldA,FieldB,FieldC與userinfo1,userinfo2,userinfo3,所有這些都是字符串。文件名爲database1.sql並存儲在FTP服務器上。有沒有辦法做到這一點,將文件留在另一臺服務器上,而不是將其導入到另一臺數據庫中?PHP檢查是否存在.sql轉儲文件中的行

+1

[使用php解析mysql轉儲文件中的值?](http://stackoverflow.com/questions/7503150/using-php-to-parse-values-from-a-mysql-dump-文件) – 2013-03-05 15:31:35

+0

'for $ n = 0..N:''fseek($ n * 10000)''$ s = fgets(10000 + 500);''preg_match(...,$ s)' – biziclop 2013-03-05 15:31:58

+1

您是否試過在文本編輯器上打開文件並使用「查找」?太大?也許使用'grep'(如果你在linux/unix上) – dakdad 2013-03-05 15:32:16

回答

0

好的,首先沒有辦法對文件進行任何處理,而無需在運行PHP的服務器上進行處理。但是,您可以使用一個PHP腳本登錄到FTP並自動下載並處理該文件。對於SQL處理,最簡單的方法是逐行讀取文件,首先使用strpos(「INSERT INTO .....」)檢查正確查詢類型(插入,更新)的開始位置。 ..不管它可能是什麼,然後使用類似:

https://code.google.com/p/php-sql-parser/wiki/ParserManual 並重新生成的數組和比較值。問題或文件非常大,您需要一些複雜的preg_match正則表達式來獲取必要的值和校驗和,然後可以將它們存儲在一個臨時數組中,並且每次檢查校驗和數組以匹配您是否已經擁有這些值...