複数のクエリを含む 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が拡張機能をインストールするときに使用されます