【C#かC++】SQLServerのテーブルへ、EXCELファイルからインポート

このQ&Aのポイント
  • C#(もしくはC++)プログラムで、SQLServer上に作成したDB内のテーブルにExcelファイルからデータをインポートする方法を知りたいです。
  • 現在行っているプログラムは、Windowsサービスで、指定形式のExcelファイルを監視し、そのデータをDBに登録する作業をしています。この作業を行うために、簡単にインポートできる方法を探しています。
  • もしインポートができない場合は、他にどのような方法でExcelファイルのデータをDBに登録することができるのか知りたいです。
回答を見る
  • ベストアンサー

【C#かC++】SQLServerのテーブルへ、EXCELファイルからインポート

いつも、「教えて!goo」にお世話になっています BombBombと申します。 質問です。 C#(もしくはC++)プログラムで、 SQLServer上に作成したDB内のテーブルに Excelファイルからデータをインポートしたいと思っています。 ManagementStudioの[オブジェクトエクスプローラ]画面で、[管理]フォルダの右クリックメニューから行う、 「データのインポート」では、Excelファイルからのデータインポートを 行うことはできましたが、プログラムからこの処理を行う方法がわかりません。 現在行っているプログラムは、 Windowsサービスで、あるフォルダを監視し、 指定形式のExcelファイルが入っていたら、そのデータをDBに登録する ・・・というものです。 (例えば、DB上にある[販売管理]TBLには「販売日」「商品ID」「担当者」の3つのカラムがあるとします。  同じように「販売日」「商品ID」「担当者」が1か月分記述された  Excelファイルがあり、そのデータをDBの[販売管理]TBLにレコード追加したい。という作業です) この作業を行うために、簡単にインポートできないかと考えたのですが、 できますでしょうか。 もしできない場合には、他にどのような方法が考えられますでしょうか? お手数ですが、 ご教授いただけると助かります。よろしくお願いします。 ++++++++++++++++++++++++++ OS:Windows2003Server DB:SQLServer2005 EXCEL:EXCEL2003 開発環境:VisualSutudio2005

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

  • ベストアンサー
  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.1

SQLServer2005 には BIツールとして SSISが入っています。 SSISはインポート/エクスポート機能だけでなくデータ加工するには 簡単かつうってつけのツールです。 SSIS には 自分で プログラムを作成して加工できますが基本的には 用意された部品を並べてIN/OUT を定義すればプログラミングの知識は なくてもできます。優れた加工ツールですので試してはいかがでしょうか? 【参考】 ◆SQL Server 2005 自習書シリーズ・ビジネス インテリジェンス編 http://www.microsoft.com/japan/technet/prodtechnol/sql/2005/exercises.mspx#EKE ◆MSDNフォーラム (1) http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1337739&SiteID=7 (2)SQL Server 2005での項目数が不揃いなCSVファイルのインポートについて http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=667091&SiteID=7 ※MSDNフォーラムの SQL SERVER 2005 フォーラムを  SSISで検索してくださいたくさん記事が載っています。 以上

BombBomb
質問者

お礼

早速の回答ありがとうございます。 SSISについて、調べて、勉強してみますね。 さしあたって、お礼まで。 どうもありがとうございました。

関連するQ&A

  • アクセスにエクセルの2つのファイルを1つのテーブルにインポートしたい。

    アクセスのテーブルにエクセルのファイルをインポートした後、別のエクセルのファイルをインポートすると前のファイルのデータが消えてしまいます。  前のファイルデータの次につなげて2番目のデータファイルをインポートすることはできますか? OS WIN Me オフィス2002を使用しています。 どうかよろしくお願いします。

  • Access97 Excelファイルのインポート

    はじめまして、こんにちわ。 早速ですが、質問させてください。 Access97で既存のテーブルにExcelファイルをインポートした際にエラーがでてインポートできないファイルがありました。その原因を調査している次第です。 Excelファイルは様々な担当者に作成いただく予定ですので、エラーの再現性を確認して、原因となる作業を予め禁止しておきたいと考えております。 (1)ファイル→外部データ取込→インポートからインポートするExcelファイルを選択し、インポートボタンを押したところ、『ファイル○○にアクセスできません。このファイルが存在するか、またファイルの形式が正しいか確認してください』と言うエラーが出ます。 実際にそのファイルは開けますし、同じように作成したファイルはインポートできるものもあります。 中身を全てコピーし、新規作成したExcelファイルに貼り付けて名前をつけて保存したものをインポートすると、問題なくインポートできました。 どういった作業をすると、上記エラーが出るようなファイルになってしまうのでしょうか。 (2)ファイル→外部データ取込→インポートからインポートするExcelを選択し、インポートボタンを押した後、ワークシートインポートウィザードで『先頭行をフィールド名として使う』をチェックすると、『先頭行にAccessフィールド名に使用できない文字が含まれています。』というエラーが出ます。 調べてみると、空白の列がフィールドとしてインポートされるようになっています。Excel上では何も表示されていない列で、その列を削除すればエラーがなくなります。 どういった作業をすると、空白の列や行がインポートされるようになってしまうのでしょうか。 お手数ですがよろしくお願い致します。

  • SQLSERVER データインポート

    SQLSERVER2008で別のデータベース1からbcpコマンドでバックアップしたdatファイルがあります。それを別のサーバーのデータベース2に インポートしたいのですが、データベース2もSQLSERVER2008です。 (データベース2にはインポートするテーブルは作成済です。) bcpコマンドでインポートしようとすると、サーバーが見つからないかインスタンスエラーになってしまいできません。 そこでツールでインポートしようとしたのですが、 データソースをテキストでdatファイルのあるパスを指定して やったのですがこれも入りません。 どうすればインポートできますでしょうか? データベース2の方はwindows認証です。コマンドでcdで datファイル(table1.dat)がある階層まで下げてからこう入力しました。複写元 table1.dat→複写先 DB TESTのtable1へ bcp TEST.dbo.table1 in table1.dat -T -C -t bcp,ツールどっちでもいいのでインポートの方法を教えてください。

  • SQLServerで別インスタンスのデータベースのテーブルの結合はできますか?

    [インスタンスA] UserID=sa PassWord=****** DataBase=DB01 で接続されるテーブルDB01.Table1 と [インスタンスB] UserID=HogeUser PassWord=@@@@@@ DataBase=DB02 で接続されるテーブルDB02.Table2 の2つのテーブルを結合してプログラムから処理を行いたいのですが、 可能なのでしょうか。 SQLのイメージは select * from [インスタンスA].[db01].[dbo].[Table1] tbl1 join [インスタンスB].[db02].[dbo].[Table2] tbl2 on tbl1.id=tbl2.id という感じです(もちろん動作しませんが) インスタンスAとインスタンスBは同一マシンにあり、SQLServer2008SP1とします。 開発環境はVS2008SP1でSqlClient.SqlConnectionを使用して接続し、 SqlCommandにてSQLを作成し、実行するような形です。 どうかよろしくお願いいたします。

  • SqlServerのユーザー権限

    ずっとOracleを使用してきたのですが、このたびSqlServerの使用を検討することになりました。 Oracleでは、パスワードを知らなければDBの中身を参照することはできないですが、 SqlServerでは、Windows認証、SqlServer認証ともに、サーバー管理者であれば、 DBの管理ができるように思います。 開発時はいいのですが、リリース後は、サーバー管理者(客先のシステム部など)にも DBのデータは見せたくありません。 担当部署と開発担当者のみ参照できるよう設定したいのですが(パスワードを知る人間を限定する)、 SqlServerではそのような設定は可能なのでしょうか?

  • C# ファイル→バイナリ→ファイルの変換

    いつもお世話になっています。 只今、エクセルやワードなどのファイルをバイナリデータに変換し DBへ格納するプログラムを作成しています。 使用しているDBはSQLServerです バイナリデータに変換して格納することは出来ました ですが、そこから元のファイルに戻す方法が分かりません やりたいことは  1:バイナリデータを復元  2:ダウンロードする  3:ダウンロードすることなく開く の3つです 調べ方が悪いのか、全く見つからず困っています。 WebではなくWindowsフォームがベースのプログラムです サンプルや手順などがわかる方、よろしくお願いします。

  • エクセルからのインポート

    はじめまして。 初心者なので、よろしくお願いします。 アクセスのVBAでエクセルのデータをSQLServer(MSDE)に インポートしたいのですが、どのような方法が考えられるでしょうか? BCPも勉強しましたが、エクセルのシートでできるか理解できなかったです。 よろしくお願いします。

  • AccessとSqlServerのテーブルリンク

    Access2007とSqlServer2008を使用しています。 Accessで作成したテーブルを「データベースツール」-「データの移動」でSqlServerに移行してリンクする際、 (1)SqlServerに新規にデータベースを作成すると、リンクテーブルマネージャから見てもリンク先DBが正しく表示されますが、 (2)その後、その既存DBに同じAccess内の別のテーブルを、「データベースツール」-「データの移動」してリンクしたものは、リンクテーブルマネージャから見てもリンク先DBが ()となっており表示されていません。 ツールとしてSqlServer Management Studioを使っていますが、そこからでも(1)のテーブルは表示されていますが、(2)のテーブルは表示されません。 でもリンクはできているようなのです。 また、SqlServer Management Studioを使って、SqlServer内に新規テーブルを作成し、 それをAccessからリンクしようとしても、テーブルリンク一覧内に表示されない状態です。 (「外部データ」-「ODBCデータベース」…)にて SqlServerのファイルデータソースを表示しています) (2)のテーブルはSqlServer Management Studioから見ることができないため、更新・削除もできず困っています。 DB、テーブル、リンク方法等、何か問題があるのでしょうか? よろしくお願いします。

  • Access VBAでファイルのインポートについて

    あるディレクトリにAccessのmdbファイルを置き、「インポート」フォルダを隣に置きます。 このフォルダ内にCSVファイルを置き、それをVBAでテーブル「tbl_import」にインポートさせたいのです。 ちなみにインポート後はディレクトリ「インポート」下層のディレクトリ「インポート済」に移動させたいのです。 下記例文では「file.csv」と書いていますが、このファイル名はインポートの都度、常に変わります。 インポートさせるファイルは常に一つです。 「*」を用いれば出来ると思っていたのですが、うまくいきません。 良い方法を教示いただけませんか。 DoCmd.RunSQL "DELETE * FROM tbl_import" DoCmd.TransferText acImportDelim, "インポート定義", "tbl_import", CurrentProject.Path & "\インポート\file.csv", True FileCopy CurrentProject.Path & "\インポート\file.csv", CurrentProject.Path & "\インポート\インポート済\file.csv" Kill CurrentProject.Path & "\インポート\file.csv"

  • EXCELファイルをACCESS2000へインポート

    やりたいことは、access2000でAAA.xlsをワークテーブル「WK_TBL」へインポートしたいのですがエラーが発生します。(最初の行をフィールド名として使わない) 現在のプログラムは、TransferSpreadsheetを使用してやっているのですが、 「貼り付け先の ' WK_TBL ' テーブルには 'F1' フィールドがありません。」 とエラーが出ます。 そこで、WK_TBLを削除して実行すると一応取り込まれました。 TransferSpreadsheetは既に存在するテーブルに取り込むことができないのでしょうか? ちなみに、既に作成済みである「WK_TBL」には取り込み後使用したいフィールドがあるため、 フィールドが1つ余分にあります。またEXCELの先頭行と「WK_TBL」のフィールド名は一致してません。 例)EXCEL コード 名称 住所 例)WK_TBL Wコード W名称 W住所 Wフラグ

専門家に質問してみよう