2

以下のように SQL Server クエリから Excel にデータをインポートする方法をいくつか見つけましたが、どれも機能していないようです

insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
      'Excel 8.0;Database=D:\testing.xls;', 
      'SELECT * FROM [SheetName$]') select * from tblName

エラー:

OLE DB プロバイダー 'Microsoft.Jet.OLEDB.4.0' は、プロバイダーがシングル スレッド アパートメント モードで実行するように構成されているため、分散クエリには使用できません。

4

3 に答える 3

1

エラー メッセージが示すように、SQL サーバーはこの方法を使用してデータを Excel に転送できません。プログラミングを必要としない解決策の 1 つ: Excel を開き、[データ] タブ、[他のソースから]、[SQL Server] の順にクリックします。サーバー名を求めるウィンドウが開き、サーバー名とインスタンス名をバックスラッシュで区切って入力します。例: localhost\sqlexpress (PC で SQL Server Express Edition を実行している場合、それ以外の場合は、SQL Server をインストールしたサーバーとインスタンス名)。SQL サーバーで定義されているユーザー ID とパスワードを入力するか、Windows 認証をクリックして認証します。次に、テーブル名を選択する機会があります。データは Excel テーブルに転送され、右クリックして自由に更新できます。お願いします、

于 2013-07-01T05:36:07.383 に答える
0

Pinal Dave のソリューションをご覧ください。また、おそらく x64 マシンを使用しているため、ドライバーが利用できないために動作しません。この回答を確認してください。

于 2013-07-01T05:40:28.460 に答える
0

32 ビットの Office を使用していて、それをアンインストールしたくない場合は、Microsoft (64 ビット) から最新の AccessDatabaseEngine をインストールしてみてください。32 ビット バージョンをアンインストールせずにインストールするには、コマンド ラインでダウンロード ディレクトリに移動し、

AccessDatabaseEngine.exe /passive

次に、SSMS でコードを使用して Excel をインポートできます。

FROM OPENROWSET
('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=C:\path\sheet.xlsx', [Sheet1$])
于 2013-07-01T05:35:45.490 に答える