複数のクエリを含む 3 GB を超える SQL ダンプ ファイルがあります。PHPを使用してファイルをクエリに解析したい。
サイトのユーザーからの推奨により、https://code.google.com/p/php-sql-parser/を使用して解析を行いました。問題は、このメソッドを使用して取得できるのは最初のクエリだけです。
誰か提案はありますか?
ダンプ ファイルは、サーバーからのデータの唯一の遺物です。
ありがとう!
私は本当にあなたが欲しいものを見つけました:
SQL パーサー: SQL ファイルを解析し、クエリ ステートメントを抽出します(( phpclasses.org 経由))。
サンプル SQL ファイル
#これはコメントです:) select * from table1 where a=1; -- コメント付き 2 を選択 選択 * から テーブル2 ここで、a=2; #値の挿入 `versions`(`release`,`revision`,`name`,`lastupdate`) 値 ( '1','0','sqlparser',now()); に無視を挿入します。 #テーブルの作成 テーブル `test` を作成します ( `id` int(11) unsigned not null auto_increment, `name` varchar(80) not null デフォルト '', 主キー (`id`) ) engine=innodb default charset=utf8; #通関業務 `tests`(`id`,`name`) 値に挿入します ( '1','test ; value'); update `test` set `name`='test value update' where `id`='1';
出力:
配列 ( 0 => 'SELECT * FROM table1 WHERE a=1', 1 => 'SELECT * FROM table2 where a=2', 2 => 'INSERT IGNORE INTO `VERSIONS`(`release`,`revision`,`name`,`lastUpdate`) VALUES ( \'1\',\'0\',\'SqlParser\',NOW() )', 3 => 'CREATE TABLE `TESTS` ( `Id` int(11) unsigned NOT NULL AUTO_INCREMENT, `Name` varchar(80) NOT NULL DEFAULT \'\', PRIMARY KEY (`Id`)) ENGINE=InnoDB DEFAULT CHARSET =utf8', 4 => 'INSERT INTO `TESTS`(`Id`,`Name`) VALUES ( \'1\',\'test ; 値\')', 5 => 'UPDATE `TEST` SET `Name`=\'テスト値更新\' WHERE `Id`=\'1\'', )
このクラスの本当に素晴らしい点は、コメント、複数行、値に「;」が含まれるクエリなど、多くのものをカウントできることです。キャラクター。
http://pastebin.com/GxBahnyM - Typo3 CMS から取得します。Typo3が拡張機能をインストールするときに使用されます