SQLのINSERT文を作成する場合に、Excelを使用してVALUEデータを作成する場合があります。
INSERT INTO [dbo].[Sample] ([ID] ,[flg] ,[update] ,[value] ,[group] ,[count]) VALUES (4205,0,'2016-05-16 23:00:00.000',1,'k',13), (4206,0,'2016-05-16 23:00:00.000',1,'k',1), (4207,0,'2016-05-16 23:00:00.000',2,'k',4)
このときのVALUESに入れるデータはExcel上で作成し、そのデータを利用してSQL文としてVALUE部分をテキストで作成することがあります。そのときのExcelは以下のようなデータとなります。
しかし、データベース上で「ID」がプライマリーキーに設定されている場合、Excelで作成したデータに重複するIDが存在していればSQL実行時に制約違反となってしまいます。データが大量にある場合、目視でデータの重複を確認することは困難です。実際、上のサンプルデータでもID「4207」が重複しているのですが、お気づきでしょうか?
重複したデータを削除する
1.この重複したデータはExcelの標準機能を使って削除することができます。表をクリックした状態で「データ」タブの「重複の削除」をクリックします。
2.「重複の削除」画面が表示されますので、重複が含まれている列を選択し、OKボタンを押下します。(ここではすべての列にチェックをいれています。)
3.すべての項目が重複していた行が削除されます。ID「4237」の次の行に「4207」が重複していたのですが、削除されいることが確認できます。
SQL文の作成時以外にも、重複したデータが不要なケースは比較的多くあると思いますので、知っていると少し便利なExcelの機能の紹介でした。