4

複数のクエリを含む 3 GB を超える SQL ダンプ ファイルがあります。PHPを使用してファイルをクエリに解析したい。

サイトのユーザーからの推奨により、https://code.google.com/p/php-sql-parser/を使用して解析を行いました。問題は、このメソッドを使用して取得できるのは最初のクエリだけです。

誰か提案はありますか?

ダンプ ファイルは、サーバーからのデータの唯一の遺物です。

ありがとう!

4

4 に答える 4

1

私は本当にあなたが欲しいものを見つけました:

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\'',
)

このクラスの本当に素晴らしい点は、コメント、複数行、値に「;」が含まれるクエリなど、多くのものをカウントできることです。キャラクター。

于 2013-11-12T20:38:52.060 に答える
0

http://pastebin.com/GxBahnyM - Typo3 CMS から取得します。Typo3が拡張機能をインストールするときに使用されます

于 2013-04-18T16:25:58.247 に答える