- 締切済み
MySQLで、指定の複数カラムのみコピーする方法
同じ構造の、 A_table と B_table があります。 それぞれに id date name address mail comment という、6つのカラムがあります。 変更があった際に、 A_table にcsvで全データをインポートし、 B_table に変更のあったカラム( date name address mail )の列だけをコピーしたいと思っています。 ( id )は A_table と B_table 共通にし、変更しないことを前提としています。 ( comment )は外部から編集できるため、csvデータが最新の情報とは限りませんので、 csvデータでの変更は考えておりません。 レコード数としては、多い方だと思います。 上記の作業をしようと思っているのですが、 >> B_table に変更のあったカラム( date name address mail )の列だけをコピー する方法をご存じの方がいらっしゃいましたら、何卒、ご教授お願い致します。 また、 変更したいカラムだけ、csvデータとidを共通にすればインポート可能かな…と探してはみたのですが無いようで、こちらはできないと考えても大丈夫なのでしょうか。 (phpmyadminを利用しておりますが、カラム名を指定してインポートはできるのですが、 指定しないカラムは空白になって上書きされてしまいます。) ついでで申し訳ないですが、宜しければアドバイスをいただければと思います。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- chukenkenkou
- ベストアンサー率43% (833/1926)
追加で確認。 A_tableには追加データをcsvファイルをインポートするとして、その同じcsvファイルをB_tableにインポートする以外に、B_tableに追加すべきデータを特定する手段はあるのでしょうか? 例えば、A_tableとB_tableは常に同じデータが入るようにしていて、二つのテーブルの差分検索で特定できるとか。
- chukenkenkou
- ベストアンサー率43% (833/1926)
MySQLのバージョンを、MySQL 4.1、5.0、5.1といったレベルまで、最低限で提示するようにしてください。 大きな機能追加だけでなく、仕様変更もあります。 「変更」の意味が曖昧で、質問内容が分かりにくいです。 A_table、B_tableという二つのテーブルは、構造だけでなく、データもまったく同じにするということですか? それとも、まったく同じではないけど、同じデータを追加でインポートすることがあり、その時、現状ではauto_incrementでid列の値を生成しているけど、そのid列値も同じにしたいということですかね? A_table、B_tableは、同じデータをインポートする以外に、それぞれ追加があるのでしょうかね?そうであれば、auto_incrementを使用すること自体、無理があるのでは? A_table、B_tableの関係、やりたいこと、現状の問題点を、もう少し具体的に説明できませんか?
補足
ご指摘ありがとうございます。 ・MySQL クライアントのバージョン: 5.0.45 ・phpMyAdminバージョン情報: 3.2.4-rc1 です。 以前、他の質問をさせていただいたとき (http://okwave.jp/qa/q6777409.html) >>CSVをワークテーブルに一気に読み込んで、それを元に本番用テーブルを更新するSQLを実行する というご回答をいただいて、 B_tableに外部から追加・編集された( comment )があるとして、一度A_tableにCSVをすべてインポートして、変更(( name address mail )名前変更・住所変更・メール変更が何件か)がよくあるカラムのみ列ごとB_tableに上書きしたいと思っています。 idは、CSVデータであらかじめこちらで作成しているので、CSVデータで作成する以外は追加はありません。 AとB、idさえ合わせておけば、コピーもできるのかと思ってました・・・ すいません、解決の手段がなく、未熟ですが質問させていただきました。 追加でも確認いただいたのに、 >>B_tableに追加すべきデータを特定する手段 >>二つのテーブルの差分検索で特定 ということが、どれをどう指しているのか、理解が追いついておりません。 ご丁寧にご指摘いただいたのに、本当に申し訳ございません。