SQLクエリ結果から大きなデータをコピーする


9

私のSQL Server 2008では、クエリを実行した後、データの戻り値は数百万単位という非常に大きなものになります。コピーを試みましたが、例外sqlメモリエラーが発生します。データ全体をコピーしてExcelに貼り付ける方法を教えてください。

データが整列していないため、それをtxtファイルにエクスポートしたくありません。だから私はそれを手動でコピーしてExcelに貼り付けたいです。この解決策を教えてください


明確化のポイントとして、SSMSが着信データを処理しようとすると、「メモリ不足」例外が発生する可能性があります。メモリに収まらない場合は、そのエラーが発生します。その場合は、メモリ不足エラーを引き起こしていますが、コピーして貼り付けるデータを、そのメモリにデータをコピーで、問題の嘘しようとすると、それが起こるしない二回目のコピーのために貼り付けます。SMSSへのデータの戻りをバイパスすることを含むすべての回答(現在受け入れられている回答など)はこれを回避します。
RDFozz

回答:


17

希望どおりにコピーして貼り付けることができなくなります。ただし、いくつかのオプションがあります。最も簡単なのは、出力を右クリックしてCSVファイルとして保存することです。ただし、テキストデータにコンマが含まれていないことを前提としています。

名前を付けて保存

次のオプション(そしておそらく最良の方法)は、エクスポートウィザードを使用することです。データベース名、[タスク]、[エクスポートウィザード]の順に右クリックします

ウィザードはどこにありますか?

ソースは、右クリックしたデータベースになります。

ソース

目的地を選択してください。

先

書き込みクエリを選択して、転送するデータを指定します。

クエリを選択

クエリに貼り付け

クエリに貼り付け

ここでスプレッドシートのシート名を変更できます。

ソーステーブルを選択

次は、確認するマッピングのリストです

マッピングのリスト

ここから、パッケージをすぐに実行するか、SSISパッケージを保存して後で使用/修正できます。初めてエクスポートが機能せず、SSISにまったく慣れている場合は、パッケージを保存して、ウィザードの外部で修正を加えられるようにします。

オプションを保存して実行する

次に、完了を押してもう一度終了します。


2

あなたが目的地としてExcelを主張するならば、2つの簡単なオプションがあります。

まず、ネイティブの「sqlcmd.exe」または「bcp.exe」を使用すると、クエリを実行でき、自動的にファイルに出力されます。データにタブがないとすると、タブ区切りの出力は自動的にExcel列に入力されます。データにタブがある場合は、別の区切り文字を選択し、Excelでインポート中にそれに基づいて列を選択する必要があります。

次に、クエリをSSRS(SQL Server Reporting Services)レポートにドロップして実行し、フロッピーディスク/保存アイコンの右側にある矢印をクリックして、Excelにエクスポートします。何百万もの行にはSSRS 2012が必要で、.xlsxとして保存します-残念ながら、SSRS 2008 R2でも64k行を超えることはできません。自動化するには、レポートをスケジュールします。

これらのコマンドのリファレンス:

Technet sqlcmdエントリ

Technet bcpエントリ

social.msdn sqlcmdタブ区切りのフォーラム投稿


0

それが一度だけのことなら。

クエリを実行します。右下の結果ウィンドウで、左上の空の四角をクリックします。結果を別名で保存...デフォルトはCSVで、ファイルをダンプする場所(ネットワーク共有またはローカル)を選択します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.