2011-02-02 8 views
3

私は大きなSQLダンプ250MB +を持っており、www.mysiteをdev.mysiteに置き換える必要があります。私はfind/replaceを行うのにnanoとviを試しましたが、両方ともチョークします。ナノはそれを開くことさえできず、viは今1時間見つけて交換しています。* nixの最も速く/最も効率的な検索/置換アプリは何ですか

大きなファイルで高速検索/置換を行う* nixまたはWindowsシステムのツールを知っている人はいますか?

答えて

5
sed -i 's/www\.mysite/dev.mysite/g' dump.sql 

(入力の大きさに等しい一時記憶空間を必要とする)

+0

私は括弧で拘束されています。大量のストレージが利用できない場合のソリューションまたは、少なくとも一時ファイルを格納する場所を教えてください。 –

1

もしsed

例代わり

sed -e "s/www.mysite/dev.mysite/g" your_large_sql 

を必要とする、データベースにSQLをインポートし、replaceを使用一致する文字列を置換する

4

検索/ SQLダンプに置き換え彼らはテキストファイルされていません

  • 良いアイデアではありません
  • SQLの構文エラーは、彼らは時には非常に長い行が含まれている
  • を容易に導入されています。

これは、実稼働していないデータベースサーバーにロードし、適切なUPDATEステートメントを実行してから再度ダンプすることです。このために、MySQLでREPLACE関数を使用することができます。

+0

さて、本番用のWordpressやMagentoデータベースを開発用サーバーに移動するにはいくつかの方法があります。彼らは多くのテーブル(現在Magentoにある396)を含んでおり、個々の更新を行うことは実用的ではありません。 www.mysiteをdev.mysiteに置き換えるだけで十分です。 MySQL Dumpsはテキストファイルです(SQL文だけです)。 –

+1

いいえ、MySQLダンプはテキストファイルではありません。人々は彼らが大部分のテキストファイルであると考えている。実際には、実際には、エディタに1つを読み込んで再び保存すると、通常は破損します。これは、BLOBが(ほとんど)テキストファイルにバイナリ形式で格納されているため、文字データとして解釈しようとすると正しくありません。 – MarkR

+1

データベースにBLOBが含まれている場合は、ASCII以外のデータが含まれていても問題ありません。しかし、私はそうではなく、400テーブルのデータ内の特定の文字列を何千もの列を組み合わせて置き換える他の解決法は知らない。アイデアがあれば、私はそれを聞いてみたいです。この時点ではCMS開発者にとって大きな問題です(プロダクションからステージングまたは開発者にデータを移動する必要があり、しばしばハードコーディングされたリンクが含まれているため)。 –

関連する問題