sql >> データベース >  >> RDS >> Sqlserver

Excel シートのアップロードとデータの SQL Server データベースへのインポート

    あなたは HttpPostedFile を扱っています。これは、Web サーバーに「アップロード」されるファイルです。そのファイルをどこかに保存してから使用する必要があります。なぜなら...

    ...あなたの例では、たまたま、ファイルが存在する同じマシンで Web サイトをホストしているため、パスにアクセスできます。サイトを別のマシンにデプロイするとすぐに、コードは機能しなくなります。

    これを 2 つのステップに分けます:

    1) ファイルをどこかに保存します - これはよくあることです:

    string saveFolder =@"C:\temp\uploads"; //アップロードしたファイルを保存するマシン上のフォルダーを選択しますstring filePath =Path.Combine(saveFolder, FileUpload1.FileName); FileUpload1.SaveAs(ファイルパス);  

    これでファイルがローカルに作成され、実際の作業を行うことができます。

    2) ファイルからデータを取得します。コードはそのまま動作するはずですが、接続文字列を次のように記述するだけでもかまいません:

    string excelConnString =String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties="Excel 12.0";", filePath);  

    次に、アップロードしてインポートしたばかりのファイルを削除することを検討してください。

    より具体的な例を提供するために、コードを 2 つの方法にリファクタリングできます。

     private void SaveFileToDatabase(string filePath) { String strConnection ="Data Source=.\\SQLEXPRESS;AttachDbFilename='C:\\Users\\Hemant\\documents\\visual studio 2010\\Projects\\ CRMdata\\CRMdata\\App_Data\\Database1.mdf';統合セキュリティ=True;ユーザー インスタンス=True"; String excelConnString =String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0\"", filePath); //Create Connection to Excel work book using (OleDbConnection excelConnection =new OleDbConnection(excelConnString)) { //Create OleDbCommand to fetch data from Excel using (OleDbCommand cmd =new OleDbCommand("Select [ID],[Name],[Designation] [Sheet1$] から」、excelConnection)) { excelConnection.Open(); using (OleDbDataReader dReader =cmd.ExecuteReader()) { using(SqlBulkCopy sqlBulk =new SqlBulkCopy(strConnection)) { //宛先テーブルに名前を付けます sqlBulk.DestinationTableName ="Excel_table"; sqlBulk.WriteToServer(dReader); } } } } プライベート文字列 GetLocalFilePath(string saveDirectory, FileUpload fileUploadControl) { string filePath =Path.Combine(saveDirectory, fileUploadControl.FileName); fileUploadControl.SaveAs(ファイルパス); filePath を返します。 }  

    SaveFileToDatabase(GetLocalFilePath(@"C:\temp\uploads", FileUpload1)); を呼び出すだけです。

    他の 拡張プロパティ を確認することを検討してください Excel 接続文字列用。役に立ちます!

    その他の改善点としては、Sql データベース接続文字列を構成に入れたり、適切な例外処理を追加したりすることが含まれます。この例はデモンストレーションのみと考えてください!



    1. Oracleへの多数の(UDF)検証関数の追加-どのメソッドが最も高速に実行されるか

    2. MySQLエラー1045(28000):ユーザー'bill' @'localhost'のアクセスが拒否されました(パスワードを使用:YES)

    3. SQLServerデータベースでT-SQLを使用してすべてのテーブルのすべてのインデックスを再構築する3つの方法

    4. Hibernateを使用してPostgres_INT8をJavaエンティティにマッピングするにはどうすればよいですか?