• ベストアンサー
  • 困ってます

AccessのテーブルをSQL Serverに自動インポートする方法について

現在SQL Server2005を使用しております。 別のサーバー内でAccessのテーブルデータが定期的に更新されており、 このデータを利用したシステムをSQL Server上で作ろうと考えています。 手動でSQL ServerにAccessのテーブルデータをインポートするやり方は分かりましたが、(データ更新の為に)定期的にインポートする方法がわかりません。 どのように実現すればよいか、サンプルや参考になるHPがありましたら 是非教えていただけないでしょうか?

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数4383
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1

SQL Serverのエディションと、Accessのバージョンを書いた方がよいです。 (Access2003までを想定して書きます) 1) リンクサーバを設定する  ・サーバオブジェクト→リンクサーバで作成  ・リンクサーバ名は任意(例えばACC)、「Microsoft jet 4.0 OLE DB Provider」を選択し、製品名に「Microsoft Access」、あとはMDBをフルパス指定するだけでよい。  ・SQL Server側では「SELECT * FROM ACC...テーブル名」の形式でクエリを実行できる。  (条件)32ビットマシンであること 2) OPENROWSETを使う  ・以下のようなクエリを実行する   SELECT a.* FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','MDBのフルパス';;,テーブル名) AS a  ・あとはリンクサーバと同じ  (条件)32ビットマシンであること。アドホッククエリの実行を許可しておくこと 3) SSISを使う  ・SQL Server Integration Serviceで取り込み処理をパッケージとして作成する  (条件)Standard Edition以上であること いずれの方法もジョブをSQL Server Agentに登録することで定期実行できます。 1)2)の場合は、TRUNCATE TABLE文とINSERT SELECT文、3)の場合はパッケージの実行を登録することになります。 Expressであれば、sqlcmdを使ったバッチを書いてそれをWindowタスクで実行します。 外部データのアクセス:http://msdn.microsoft.com/ja-jp/library/ms188313(SQL.90).aspx OPENROWSET http://msdn.microsoft.com/ja-jp/library/ms190312(SQL.90).aspx

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございます。 >SQL Serverのエディションと、Accessのバージョンを書いた方がよいです。 申し訳ありませんでした。 SQL Server 2000 StandardがWin2003 Serverに入っているのですが、自分のPC(WinXP)に入っているSQL Server2005 StandardのManagement Studioで2000側を操作している状況です。 2000と2005とVersionが違うので正しい使い方か分かりませんが…。 Accessは2003になります。 1),2),3)の手段、全てで試してみたいのですが取り合えず1)でできそうです。 >「SELECT * FROM ACC...テーブル名」 で実行したところデータがとれました。 しかしデータを読んでいるだけで保存はされていないので、後はテーブルを作ってコピーするSQL文を追加すればよいのでしょうか? (見当違いでしたらすいません) SQL Serverは今回初めて使うので実現手段も調べてはみましたが結局はよくわからず途方にくれていたのですが、解決の道筋がみえそうです。 ありがとうございます。 他の手段も追って確認したいと思います。

関連するQ&A

  • AccessとSQL Serverの連携について

    Accessをフロントエンドとして、SQL Serverをバックエンドとしてデータベースを構築したいとします。 【質問1】 構築後、Accessのテーブルやフィールドを変更することはできるのでしょうか。 【質問2】 上記の仕組みをWindowsサーバではなく、UNIXサーバ上で実現できるでしょうか。

  • SQL Serverのテーブル追加を、Accessに反映させたいのですが・・・

    SQL Server Enterprise Manager でテーブルの行を追加したのですがが、 リンクさせているAccessのテーブルに反映されません。 会社のDBで、テーブルをSQL Serverで作成し、 Accessへリンクさせています。 通常の入力業務はAccessで行っています。 このDBを作成した前任者が退職してしまい、 DBを管理できる人がいない状況です。 ネットで調べたところ、SQL Serverで、 「パブリケーションの新規作成」を行うか、 「DTSインポート/エクスポート」を行う必要がありそうなのですが、 これらの違いもわからず、 またAccesDBへの影響がわからず、うかつに試せない状況です。 SQL Server、Access共に全く明るくないため、 つたない文章で申し訳ありませんが、 どなたか、テーブルの追加を反映させる方法を 教えて頂けませんでしょうか。

  • テーブルのエクスポート・インポート

    SQL Server2005 を使用しています。 テーブルのインポート・エクスポートに関して質問があります。 今まで、Oracleを主に使用していて、「EXP」「IMP」コマンドを使用して DMPファイルを介して別PCのデータベース間でテーブルのやり取りをしていました。(DB上のテーブルすべてや特定のテーブルのみなど) 同様のことをSQL Serverで実現したく下記を試したのですが上手くいきません。 1.Management Studio で「タスク」→「データのインポート(エクスポート)」   フラットファイル、Excel、MDBファイルなど試したのですが、   これらの中間ファイルを介した際にデータ型が変わってしまい   元の型のまま戻せない。   Oracleの「DMP」ファイルのようなものには落とせないのでしょうか? 2.「bcp」コマンド   これに関しては、複雑でよくわかりませんでした。   もし、このコマンドで実現可能であれば、やり方を教えて下さると   助かります。 以上、ながなが書きましたが宜しくお願い致します。

その他の回答 (1)

  • 回答No.2

#1です。 とりあえずリンクサーバが使えたのであれば、よかったです。 >しかしデータを読んでいるだけで保存はされていないので、後はテーブルを作ってコピーするSQL文を追加すればよいのでしょうか? その通りです。データは入れ替えでよければ、テーブルを作っておいて、 TRUNCATE TABLE テーブル; INSERT INTO テーブル SELECT * FROM ACC...テーブル; を実行させればOKです。 Standardということなので、SQL Server Agentが使えます。 タスクを新規登録して、上記の2つのコマンドを打ち込み、スケジュールを指定すれば自動実行されます。 詳細はリンクなど、MSDNを参考にしてください。 サーバはSQL Server 2000だそうですが、通常の作業には全く問題ないです。ただ、タスクの登録までSSMSでできるかは試したことがないので、わかりません。 うまく登録できないようなら、サーバにログインしてEnterprise Managerを開き、そこで設定した方がいいかもしれませんね。

参考URL:
http://msdn.microsoft.com/ja-jp/library/ms189237(SQL.90).aspx

共感・感謝の気持ちを伝えよう!

質問者からのお礼

方法(1)での確認完了しました。 また(3)を試したのですが、やはりServer側が2000という事もあり jamshid6さんがおっしゃるとおりSSISは使えないようです。 (SSISは2005から追加された機能ですので当然といえば当然ですね。) >サーバにログインしてEnterprise Managerを開き、 >そこで設定した方がいいかもしれませんね こちらも仰るとおり、サーバー側で設定したら上手くいきました。 (2)の方法も後ほど試したいと思います。 いろいろと教えていただきありがとうございました。 一旦クローズさせていただきます。

関連するQ&A

  • Accessのテーブルへのデータインポートについて

    Accessのテーブルへのデータインポートについて Access2002で、A.mdbのTESTテーブルからB.mdbのTESTテーブル(構造は同じ)へテーブルデータをインポートしたいのです。 TESTテーブルの主キーはSEQ(オートナンバー)しかありません。 そのときに、コピー元とコピー先の主キーに重複があった場合、オートナンバーなので自動で再付番しデータが追加して欲しかったのですが、 Accessの機能のエクスポート、インポートでは、コピー先に主キーに重複があったデータは上書きされてしまいます。 テーブルを開き、データをコピー&ペーストしますと、ペーストしたときにオートナンバーで自動で再付番されます。 この方法でもいいのですが、データが数百万件あるので、現実的ではありません。 Accessのインポート・エクスポートで、オートナンバーで主キーを再付番してから、B.mdbのTESTテーブルにデータ追加する方法はないでしょうか? よろしくお願いいたします。

  • Accessでのインポート時アップデート

    Access 2003を所持しています。ExcelデータをAccessのテーブルにインポートしたいと思います。 インポートウィザードでインポートをすることはできました。 そしてプライマリーキーを設定します。 その後、同じExcelをインポートする時に、既にインポートされているものは、UPDATE、プライマリーキーがExcelにないものはInsertする。 といったような事が実現できないかなと思っています。できないようであれあば、Access 2010など最新のものではそのような事が可能になっているでしょうか? もしできないようであれば、それが実現できるソフトウェアが欲しいと思っています。 つまり、欲しいソフトウェアはDBMS。Excelをインポートできる。条件によってinsert,updateができる。 といったものです。よろしくお願い致します。

  • ACCESSでcsv テーブルを利用する良い方法は?

    いつもお世話になっています。ACCESS はまったくの素人です。 csv で提供される6種類程度の元データがあり、定期的にファイル単位で更新されます。これを現在はテーブルにリンクしているのですが、処理が重くて困っています。インポートすると劇的に軽くなりますが、元ファイルの更新時に手間が増えて困ります。具体的には再度インポートしてテーブルを上書きするとリレーションシップが切れてしまうので、一度全てのレコードを削除して、新たに全レコードを追加すると言う手順を思い描いています。 このような場合、どうするのが効率的なのでしょうか。よろしくお願いいたします。

  • SQL ServerとACCESSとのデータのやり取りについて

    下記の仕組みを検討しています。データをSQL Serverに置く。(安全性などを考慮して)Access側にも同じ構造のテーブルを用意してデータの編集・検索表示などをACCESSで行う。更新したデータをSQL Serverの該当テーブルにSQL文を実行して書き込む。書き込み方法は、両者を比較してSQL Server側にないレコードをInsert文にて追加する。(Not Inによるサブクエリを使用) お聞きしたいのは、ここで問題が発生していまして、 (1)単一主キーのテーブルの場合は動作しているが、複数主キーのテーブルの場合に、処理に非常に時間がかかる、もしくはエラーとなること(複数主キーでは処理できないものなのか) (2)上記のようなSQL ServerにデータをおいてAccess側でデータの編集・検索表示などを行う場合の良い仕組みについて 色々とHPを探し回ったのですが、今回のケースにずばり当てはまるものがなく、解決の糸口もなく苦戦しています。わかりにくい質問文になって申し訳ないですが、似たようなご経験の皆様方おられましたらアドバイス頂けないでしょうか。お願い致します。

  • Access2010でVBAでのインポート

    csvファイルを指定したテーブルにインポートさせるのですが、この最初のフィールドに主キーを付与させようとしています。手動でインポートする際はメニューで指定するので主キーが付与されるのですが、VBAではcsvファイルそのままの状態でしかインポートされません。 このテーブルは、毎月更新させるので、一度データを削除してインポートさせます。 Mypath & Fdnは階層指定です。 いろいろネットで調べて下記の構文でインポートはできるのですが DoCmd.TransferText acImportDelim, "222 更新データ インポート定義", "更新データ【更新根拠】(当月)", Mypath & Fdn & "\222 更新データ【請求根拠】.csv", True, "" 手動でインポートする時指定する”主キーを自動的に設定する”はどのようにすれば適用されるのかがわかりません。 どなたか教えてください。よろしくお願いいたします。

  • ACCESS2002でSQL Server2005のテーブルをODBC

    ACCESS2002でSQL Server2005のテーブルをODBC接続でリンクさせています。(「外部データの取り込み」-「テーブルのリンク」) そのリンクしたテーブルのプロパティーを見ると「主キー」が設定されているのですが、プロシージャでこのテーブルをOpenし、IndexでSeekすることはサポートされていないのでしょうか?

  • ACCESS のインポート

    ACCESS 2003をかじり始めた初心者です。 2つのテーブルから作ったクエリのデータにEXCELデータをインポートしようと思いましたが、インポートウィザードではインポート先としてテーブルを要求して来るようです。どうすれば良いのでしょうか。クエリをテーブルに変換する方法があればいいのかも知れませんが。

  • SQL Server とaccess この認識であってますか?

    SQL Serverを使えば共有されていない2台のパソコンからでもIDとPWがわかれば テーブルをSQL Serverにアップしてaccessで操作できると言う認識であってますか? accessの本体の部分(フォームなど)をこの2台のパソコンに入れておけば 同じデータ(テーブル)を扱えるのでしょうか? ご回答よろしくお願いします。

  • SQL Serverのリンクサーバーの

    こんにちは。 現在VisualStudio 2008 ProでC#を用いてWebアプリケーションを作成しようとしています。 いつもは、SQL Serverのデータを扱うのにADO.NETを使用してアプリケーションを作成しています。 Webアプリケーションのデータベース用のPCとしてWindows2003とSQL Server2005 Standardが搭載されているPCにAccess2003で作られているmdbがリンクサーバー設定されているものを用意しております。 このmdbは別のシステムで使用されており、常に更新されています。 今のところ、SQL Serverのタスクを用いて定期的(10分おきとか)にこのリンクサーバー上のmdbの情報を読み取り、SQL Server上に作ったテーブルを更新しているのですが、これだと情報を取りにいった時にタスクの更新が行われるまで、古い情報を取得することになります。 リアルタイムで取得することを考えた場合、 C#で作成したアプリケーションでこのSQL Serverにアクセスした時に直接リンクサーバーに対してSQL文を実行するという方法を考えているのですが、いろいろ検索しましたが探すことが出来ませんでした。 この様な方法がありましたら教えていただけないでしょうか?

  • VBAでAccessのテーブルのエクスポート・インポートをするには。

    すみませんが、教えてください。 Excel+VBAで、AccessをSQL,ADO,ADOXで操作しようとしています。 a.mdbのテーブルを、b.mdbに、エクスポート(インポート)したいのですが、やり方がわからず困っています。 すみませんが、テーブル構造のみをエクスポートする方法、データを含めてエクスポートする方法を教えてください。