現在私は海外から購入したサイトを日本語化しています。
データベースに格納されている定型文を日本語化したいのですが、その定型文がどこのテーブル、カラムに格納されているのかがわからず、直すことができません。
例えばログアウトが完了したときにポップアップで表示されるyou are now logged out of the site. などです。
検索方法を調べても、どのテーブルに格納されているかがわからないと検索できないselectなどしか見つかりませんでした。(そのテーブルに格納されている情報一覧表示方法しか見つけられなかった)
格納されている情報がどのテーブルに格納されているのか調べる方法をご存知の方、ご教授下さいませ。
どうぞ宜しくお願いいたします。
mysqlに登録してある情報を変更したいが、どこのテーブルに格納されているかわからない
2747
PV
回答
下記マニュアルを見て思ったのですが、mysqldump(--tabオプション付き)でテキストダンプデータを吐き出してから、その出力ディレトリ内で「grep メッセージ *.txt」するという方法はどうでしょうか。
これで格納されている情報(メッセージ)からテーブル名がわかるので、次に「テーブル名.sql」ファイルを見ればカラム名もわかるように思います。
マニュアル
7.4.3 mysqldump による区切りテキストフォーマットでのデータのダンプ
https://dev.mysql.com/doc/refman/5.6/ja/mysqldump-delimited-text.html
追記 (2015/12/31)
実際はどんな感じになるのか、こちらでSakilaを使って試してみました。
Sakila Sample Database
https://dev.mysql.com/doc/sakila/en/
mysqldump実行
$ mysqldump -u ユーザ名 -p --tab=/var/tmp/dump sakila
出力ディレクトリの内容
$ ls /var/tmp/dump
actor.sql customer_list.sql language.txt
actor.txt film.sql nicer_but_slower_film_list.sql
actor_info.sql film.txt payment.sql
address.sql film_actor.sql payment.txt
address.txt film_actor.txt rental.sql
category.sql film_category.sql rental.txt
category.txt film_category.txt sales_by_film_category.sql
city.sql film_list.sql sales_by_store.sql
city.txt film_text.sql staff.sql
country.sql film_text.txt staff.txt
country.txt inventory.sql staff_list.sql
customer.sql inventory.txt store.sql
customer.txt language.sql store.txt
拡張子.sql
と.txt
が対になっていて、例えばactor.sqlがテーブルactorのスキーマで、actor.txtが同テーブルのデータです。このディレクトリで*.txt
に対してgrepすれば、メッセージが入っているテーブル名がわかるはずです。次にその.txt
ファイルを見ればよいですが、中身はこんな感じになっています。
.txtファイルの内容
$ head -3 actor.txt
1 PENELOPE GUINESS 2006-02-14 19:34:33
2 NICK WAHLBERG 2006-02-14 19:34:33
3 ED CHASE 2006-02-14 19:34:33
これでメッセージが入っているのが何番目のフィールドかわかるはずなので、次に.sql
ファイルを見てスキーマと照らし合わせればテーブルのカラム名もわかると思います。
編集
履歴 (2)
ウォッチ
この質問への回答やコメントをメールでお知らせします。