2011-09-12 14 views
20

非常に大きなデータセットを返すクエリがあります。私はそれをコピーして通常のExcelに貼り付けることはできません。 Excelシートに直接エクスポートする方法についていくつかの調査を行っています。私はMicrosoft Server 2003を実行しているサーバーでSQL Server 2008を実行しています。Microsoft.Jet.OLEDB.4.0データプロバイダーとExcel 2007を使用しようとしています。このように見える小さなコードをまとめました。例に見られるように。SQLクエリデータをExcelにエクスポート

INSERT INTO OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 
'Data Source=C:\Working\Book1.xlsx;Extended Properties=EXCEL 12.0;HDR=YES') 
SELECT productid, price FROM dbo.product 

しかし、これは動作していない、私は、「キーワードの近くに不正な構文は、 『選択』」

を言って、エラーメッセージを取得しています。

誰かがこれを行う方法や、より良い方法を考えていますか?

+0

また、[Sheet1]でシートを指定する必要があります。 – JNK

+1

[Sheet1]で指定できますか?オハイ[たわごと] !!! – JBone

答えて

40

これはあなたが探しているものであるかどうかは知りませんが、このようにExcelに結果をエクスポートすることができます。結果ペインで

、すべてのレコードを強調するために左上のセルをクリックしてください左上のセルを右クリックし、[結果を別名で保存]をクリックします。エクスポートオプションの1つはCSVです。

あなたもショットこれを与えるかもしれない:

INSERT INTO OPENROWSET 
    ('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=c:\Test.xls;','SELECT productid, price FROM dbo.product') 

最後に、あなたはデータの輸出のためのSSIS(置き換えDTS)を使用してに見ることができます。ここでは、チュートリアルへのリンクです:

http://www.accelebrate.com/sql_training/ssis_2008_tutorial.htm

+4

右クリック/名前を付けて保存... CSVはカンマや改行を含むテキストフィールドを引用しません。したがって、データにコンマが含まれていると、不正な形式のCSVになります。 – aucuparia

+0

結果を保存すると、列ヘッダーがエクスポートされません。 – YDS

11

エクセルにエクスポートする必要がある場合は、データのエクスポートウィザードを使用できます。 データベースを右クリックし、[タスク] - [データのエクスポート]をクリックします。

+1

これをストアドプロシージャに配置し、ページ上でイベントとして実行する必要があります – JBone

1

私は同様の問題があったが、ひねりを加えた - 結果は、1つのクエリからだったが、私の状況では、私は複数の個別の選択クエリを持っていたとき、上記のソリューションが働いていました私は結果をExcelにエクスポートする必要がありました。以下は、ウィザードが、私はこのケースで異なるクエリからのすべての結果をエクセルではなく、1つのクエリから結果をエクスポートせた

select a,b from Table_A where name = 'x' 
select a,b from Table_A where name = 'y' 
select a,b from Table_A where name = 'z' 

...私はname in句を行うことができますが、説明するための単なる一例です。

調査したところ、グリッドに結果を無効にして結果をテキストにすることができました。したがって、Ctrl + Tを押して、すべての文を実行します。結果は、出力ウィンドウにテキストファイルとして表示されます。 Excelにインポートするために、テキストをタブ区切り形式に操作できます。

Ctrl + Shift + Fを押して結果をファイルにエクスポートすることもできます。テキストエディタで開くことができ、Excelインポートのために操作できる.rptファイルとしてエクスポートします。

これは、同様の問題を抱えている他の人にも役立ちます。

関連する問題