2017-01-29 4 views
0

私はMySQLファイルでいっぱいのフォルダを持っています。それぞれのバックアップをそれぞれ独自のデータベースに書き込んで照会するという方法もありますが、私がしたいのは、SELECTの情報です。クエリ.SQLファイル(データベースにロードせずに)

私の質問:これらのデータベースをローカルに照会する方法はありますか?これは最終的には大規模なPHPスクリプト内で使用されるため、必要ならばPHPを使用するオプションがあります。

+0

ファイルから直接データを読み込みたいですか? –

+0

はい、正確には、ローカルファイルをデータベースに書き込まずに照会します –

+2

csvまたは他の既知の区切り文字を持つテキストファイルをローカルデータベースとして使用できますが、mysqlファイルは解析するのに適切な選択肢ではありません。最良の解決策は、ファイルをデータベースにインポートしてそこからデータを取り出すことです。 –

答えて

0

私も同じような状況にありました。データベースを最初にロードせずにクエリを行う方法は見つけられませんでしたが、データを抽出する他の方法もあります。パターンマッチングを使用し、必要に応じてデータを解析することができます。以下は、行の一致に対して特定の行の値を返す正規表現の例です(グループ#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を使用していることです。これは、コマンドラインでのエスケープに関する問題が原因です。

関連する問題