Excelシート(またはAccess)からSQL Azureへのデータのインポートを簡単にする利用可能なツールはありますか?私はC#スクリプトを書くことができました(そして私は今利用できる最高のものを想定しています)が、他のツールがそこにあるかどうかを確認したいと思いました。インポートするExcelシートは単純ですが、数万のレコードがあり、自動化されたツールを使用してインポートしたいと考えています。
ヘルプ?
Excelシート(またはAccess)からSQL Azureへのデータのインポートを簡単にする利用可能なツールはありますか?私はC#スクリプトを書くことができました(そして私は今利用できる最高のものを想定しています)が、他のツールがそこにあるかどうかを確認したいと思いました。インポートするExcelシートは単純ですが、数万のレコードがあり、自動化されたツールを使用してインポートしたいと考えています。
ヘルプ?
SQL Serverのデータのインポートとエクスポート(32ビット)を使用して、ExcelファイルからSQLAzureのテーブルにデータを転送することもできます。非常に高速です。宛先を選択するときは、それがSqlServer用の.NetFrameworkデータプロバイダーであることを確認してください。データソース、ユーザーID、パスワード、初期カタログのプロパティも設定する必要があります。
オプション1、コピーして貼り付ける
これは非常に大雑把な解決策ですが、確かに少量のデータで以前に使用したことがあります。Excelで行と列を選択するだけで、データベーステーブルスキーマと相関していることを確認できます。クリップボードにコピーします。Visual Studioでデータベースへの接続を開き、最後の空の行を選択して貼り付けます。
私が言ったように、非常に大雑把な解決策ですが、それが機能して時間を節約できるのであれば、それが重要です。最初に少数の行を選択してみてください。自動インクリメント列を除外することを忘れないでください。最初にCSVに変換すると、テーブルスキーマにインポートされない可能性のあるExcelフォーマットが無効になります。正直なところ、このメソッドがより大きなデータセットでどのように機能するかはわかりません。明らかに、Excelドキュメントのデータ、列の数などに依存します。データをチャンクで移動する必要があるかもしれませんが、他の方法よりも高速です。
オプション2、CSVからDataTable
2番目の方法では、ある程度のコーディングが必要ですが、データをデータテーブルにマップする方法をより細かく制御できます。基本的には、ドキュメントをExcelからCSVに変換し、行をループするDataTableオブジェクトを読み込んで、SQLデータベーステーブルに挿入する必要があります。
Dim dt As DataTable = New DataTable("myData")
Dim DataFile As FileInfo = New FileInfo("c:\myspreadsheet.csv")
Dim MyConnection As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & DataFile.Directory.FullName & "';Extended Properties='text;HDR=NO';Jet OLEDB:Engine Type=96;")
Dim oledataAdapter As OleDbDataAdapter
oledataAdapter = New OleDbDataAdapter("SELECT * FROM [" & DataFile.Name & "]", MyConnection)
oledataAdapter.Fill(dt) 'Bind the csv to the data table
'LOOP AND INSERT HERE...
For Each DataRowObj As DataRow In dt.Rows
Next