人気記事ランキングで上位に入る「テーブルデータを出力する5つの方法」では、方法の1つとしてエクセルにデータを出力する方法を紹介しました。エクセルへの出力に関してはお問い合わせも多く、SI Object Browser(以下、OB)をご利用の皆様によく使われている機能であると言えるでしょう。
しかしながらその逆、エクセルで作ったデータを投入することはできないの?と疑問に思った方もいるのではないでしょうか。結論から言いますと、できるんです。
今回ご紹介する内容は、OBの対応データベースを問わず共通の機能となります。
ここではOracle版を例として紹介していきます。
エクセルのデータを投入する
まずは空のテーブルにエクセルで作成したデータを投入してみましょう。
今回は以下のT9テーブルを使ってみます。
- T9テーブル -
項目数は4ですので、(4列 * お好きな行数)のデータをエクセルで作成します。
データ型には十分注意しましょう。
- エクセルでのデータ作成 -
エクセル上でデータを作成したら、データを投入します。
エクセルのデータ範囲を全選択&コピーして、OBでデータタブのグリッド上にカーソルを合わせます。
- エクセルデータを全選択、グリッドに貼り付け -
Ctrl+Vで貼り付け操作を行えば投入処理が実行されます。
- 貼り付け完了 -
投入したデータに問題がなければ、忘れずにコミットしましょう。
また、以下の例のように特定のカラムに対してのみデータ投入することも可能です。
(データ投入しない項目はNULL許容であるか、デフォルト値指定してあることが必要です)
- 特定カラムへのデータ投入 -
エクセルを使ってデータを編集する
ここまでデータ投入について紹介してきましたが、編集についてはどうでしょうか?あいにく投入に関してはINSERTを行う処理であるためUPDATEを行うことはできません。
ですがUPDATE文では難しいけれど、エクセルでなら簡単に修正できるようなケースもあります。多少力技ではありますが、ここでは編集と等価の方法をご紹介してみます。
先ほどのT9テーブルに以下のデータを用意しました。
以下のシナリオで、データ編集していきましょう。
・開発中システムのテストを実施した結果、ID列の値が飛び飛びになってしまった
・既存のデータはそのままにID列を連番に戻したい
- T9テーブルデータ -
まずはOBのデータグリッド上でCtrl + Aを押下し全選択状態にします。
続けてCtrl + Cを押下するとエクセルに貼り付けられる形でコピーできます。
コピーしたら、エクセルに貼り付けます。
- データをエクセルに貼り付け -
貼り付けたら、エクセルの機能を使って連番を振りなおしましょう。
- 連番振り直し -
連番を振りなおしたらデータの投入と同様OBに貼り付けを行うのですが、その前にデータをTRUNCATE文またはDELETE文で削除しておきます。先述の通り、データの投入はINSERTを行う動作となりますので事前にデータを消しておくことがポイントとなります。
- データ削除後の投入結果 -
まとめ
いかがでしたか?今回はOBとエクセルを使ってデータベースのデータを編集する方法をご紹介しました。
編集というよりは再作成に等しい操作であり、データを一度消す必要があることから本番環境で実施する際は注意が必要です。今回のご紹介内容を採用する場合でも、コピーしたデータを別途保存しておく、テーブルをエクスポートしておくなど万が一に備えておくとよいでしょう。
また、よくあるお問い合わせの一例ですが文字列のカラムに0埋めの数値(00000010)があり、これをOBからエクセルに貼り付けると先頭の0埋めが消えてしまうということがあります。
これは、貼り付け先(エクセル)の列において「セルの書式設定」を文字列としておくことで回避することができますので、コツの一つとしてご紹介します。
手軽にデータを加工・修正できるという点でSQLを記述するよりもエクセルでなんとかしたいという気持ち、とてもよくわかります。今回の内容を解決案の1つとして記憶いただければ幸いです。
- カテゴリ:
- キーワード: