SQLSERVERにAccessテーブルをストアドでインポート

2020年2月9日日曜日

今回は、AccessテーブルをSQLSERVER(MSSQL)にストアドでインポートする方法を紹介します。

必要なインストール

  • SQLSERVER:Expressでいいです。
  • SQLSERVERManagementStudio(SSMS):SQLクライアントならなんでも行けそうなのですが、SQLSERVER扱うならこれが安パイ。デバッグ機能使いたかったら、18.0未満を使いましょう。最新版では廃止されていてすごい使いづらいです。
  • Microsoft.ACE.OLEDB.12.0(Microsoft Access データベース エンジン 2010 再頒布可能コンポーネント):16.0もありますが、なぜかちゃんと配布されていないので今回はこちらを使います。
重要なのは、動作bitをすべてそろえてインストールすることです。
ここでは64bitで構成します。
MSさんのリンク先はころころ変わるので、各自最新のリンクをググって使用してください。

機能を有効にする

詳しくは下記URLドキュメントを参照

ストアドの構成

持たせる機能は
  • インポートするテーブルの一覧(wk_import_table_names)を取得
  • インポート対象テーブルのみインポート
wk_import_table_names



で、ストアドは以下の通り


このOPENROWSETってやつで、有効化したOLEを指定して、Accessのデータベースに接続します。
「import_table_name」にAccessのテーブル名を入れておけば、同名のテーブルをSQLSERVERに作成できる仕組みです。
もちろん単にSELECTすることもできます。実はExcelもインポートできます。

ね?簡単でしょう?
OPENROWSETについて詳しくなりたい方は下記参照
OPENROWSET (Transact-SQL)
BULK INSERT または OPENROWSET(BULK...) を使用して SQL Server にデータをインポートする

データ型が想定通りに入らない場合は、FORMATFILEを使用して型を指定することもできるようです。
データの一括インポートでのフォーマット ファイルの使用 (SQL Server)
今回は使用しなかったのですが、例えばCSVのインポートを行うときなんかには使えそうです。どこかで検証してみたいです。

ということで今回は「SQLSERVERにAccessテーブルをストアドでインポート」するでした~

次回

その2:SQLSERVERで全角半角変換するストアド(C#なDLLを使用)