私はMySQLファイルでいっぱいのフォルダを持っています。それぞれのバックアップをそれぞれ独自のデータベースに書き込んで照会するという方法もありますが、私がしたいのは、SELECT
の情報です。クエリ.SQLファイル(データベースにロードせずに)
私の質問:これらのデータベースをローカルに照会する方法はありますか?これは最終的には大規模なPHPスクリプト内で使用されるため、必要ならばPHPを使用するオプションがあります。
私はMySQLファイルでいっぱいのフォルダを持っています。それぞれのバックアップをそれぞれ独自のデータベースに書き込んで照会するという方法もありますが、私がしたいのは、SELECT
の情報です。クエリ.SQLファイル(データベースにロードせずに)
私の質問:これらのデータベースをローカルに照会する方法はありますか?これは最終的には大規模なPHPスクリプト内で使用されるため、必要ならばPHPを使用するオプションがあります。
私も同じような状況にありました。データベースを最初にロードせずにクエリを行う方法は見つけられませんでしたが、データを抽出する他の方法もあります。パターンマッチングを使用し、必要に応じてデータを解析することができます。以下は、行の一致に対して特定の行の値を返す正規表現の例です(グループ#2の結果を参照)。http://regexr.com/3gf9p。この例では、WordPressデータベースバックアップから 'active_plugins'行を抽出しています。
コマンドラインから、perlを使用してパターンを実行し、その結果をbash変数に格納することができます。
active_plugins=`perl -n -e '/(\047active_plugins\047,\047)(.+?)(\047,\047yes\047\),)/&& print $2' ~/Backup/websitename.com/wp-content/mysql.sql`
この例では、結果はシリアル化され、スラッシュが追加されます。これをPHPファイルに渡して解析することができます。 https://laracasts.com/series/understanding-regular-expressions:
php unserialize.php $active_plugins
は、ここでは、私は非常にこのシリーズを見てお勧めします独自の正規表現を書くことに慣れていない場合unserialize.php
ファイル
<?php
print_r(unserialize(stripslashes($argv[1])));
の内側に何です。それは私にとって大きな助けとなりました。あなたが気づいたかもしれない1つのことは、私がの代わりに\047
を使用していることです。これは、コマンドラインでのエスケープに関する問題が原因です。
ファイルから直接データを読み込みたいですか? –
はい、正確には、ローカルファイルをデータベースに書き込まずに照会します –
csvまたは他の既知の区切り文字を持つテキストファイルをローカルデータベースとして使用できますが、mysqlファイルは解析するのに適切な選択肢ではありません。最良の解決策は、ファイルをデータベースにインポートしてそこからデータを取り出すことです。 –