0

phpMyAdminで作成されたダンプを解析し、すべてのクエリを実行するデータベース復元関数を作成したいと思います。

私はすでにクエリを実行するMySQLクラスを持っていますが、それは単一のクエリを実行する方法しか知りません。ファイルの内容を単一のクエリに分割する方法を探しています。

preg_splitで遊んでみましたが、うまくいきませんでした。

$queries = preg_split('/[(.+);\s*\n/', $content, -1, PREG_SPLIT_NO_EMPTY);

正規表現はあまり得意ではありません。目標を達成する方法はありますか?

4

3 に答える 3

5

正規表現で sql を解析しようとしないでください。;SQL文字列の中にどこかにある場合はどうなりますか?

http://pear.php.net/package/SQL_Parser、または他の php mysql パーサーを試してみます。SOの PHP MySQL SQL パーサー (INSERT および UPDATE)も参照してください。

于 2009-03-27T11:02:46.800 に答える
0

最終的に、正しい正規表現を見つけることができました:

$queries = preg_split('/[.+;][\s]*\n/', $content, -1, PREG_SPLIT_NO_EMPTY);

; の後にクエリを分割します。クエリが複数の行にまたがる場合やクエリに ; が含まれている場合でも、署名され、壊れません。行末を探すからです。

于 2009-03-27T12:04:45.077 に答える
0

上記のコメントで分割すると、$content にストアド プロシージャ、関数、またはトリガーがある場合、不適切な文字列が作成されると思います。

于 2012-01-11T07:58:19.340 に答える