質問: 毎度お世話になっています。 今回、既存のデータをリレーションに分割したテーブルにインポートする方法を探しています。 現在はORマッパーを使用したプログラムを組んで変換してインポートするようにしてるのですが、毎回プログラムを組むのはめんどくさいです。 何か良い方法はないでしょうか。 というか皆さんこういう時どうしていますか? エクセルで作られたデータをデータベースにインポートする時など。
回答: 「Xの一覧が知りたい」という質問の傾向と他サイトでの対応 の「質問と一緒に回答も提示され、さらに他の回答を期待している」に該当しそうですが。ento♦さんコメントでの情報引出し感謝です。 この問題は、結局のところ次の煩雑さが原因だと思います。 * スキーマを作るのが面倒くさい。 * 外部キーの紐付けが面倒くさい。 * (追加して)インポートのためだけにOR/Mでコード書くの面倒くさい。 とりあえず上記を前提として話を進めます。 一度「何が問題(ネック)になっているか」を考えなおして、再投稿しても良いかもしれません。 方法1: EXCEL側で最終的な形にする もし最終的な格納データを、EXCEL上で作れるならば(リレーションキーの値も含め) Integer, String, Integer id, name, age 1, ISHII, 33 みたいな形のCSVを作ってしまって、コンバートするようなプログラムを書いたほうが楽でしょう。あるいは、VBAからODBCでMySQLへアクセスしてしまうのも手です。 一応、 (MySQL for EXCEL)というものも存在しますが。 使ったことがないので私からは何とも言えません(軽く調べたところ。テーブル作成やスキーマ更新もできるようですが)。 方法2: DB側で最終的な形にする テーブルスキーマ(CREATE TABLE)の手間はあるでしょうが とりあえずMySQLのストレージエンジンをCSVで指定したテーブルに、ガッツリ放り込んで。 シコシコとSQLだけで済ませてしまうのも手です。 インポートした後に、user_idとか関連付けるものを追加して、 UPDATE t1, t2 SET t2.user_id t1.id WHERE ... みたいなことやれば良いのではないでしょうか。 方法3: ACCESSで作れと抗議する 説明省略。 EXCELで入力されたデータが信用できなくて、データ検証もしたいという話などであれば......どのような手段であれ50歩100歩だと思います。