Oracle SQL Developerでクエリ結果をcsvにエクスポートする方法は?


回答:


375

使用しているバージョン

代替テキスト

2012年5月5日更新

Jeff Smithブログで、SQL DeveloperからCSV出力を取得するための優れた方法であると私が信じていることを示しています。ジェフの方法は、以下の方法1として示されています。

方法1

/*csv*/SQLクエリにコメントを追加し、クエリをスクリプトとして実行します(F5またはワークシートツールバーの2番目の実行ボタンを使用)。

ここに画像の説明を入力してください

それでおしまい。

方法2

クエリを実行する

代替テキスト

右クリックしてアンロードを選択します。

更新。SQL Developerバージョン3.0.04では、アンロードがエクスポートに変更されました。 これを指摘してくれたJanis Peisenieksに感謝します。

代替テキスト

SQL Developerバージョン3.0.04のスクリーンショットを改訂

ここに画像の説明を入力してください

フォーマットのドロップダウンからCSVを選択します

代替テキスト

画面の残りの指示に従います。


25
+1。「アンロード」という用語は、私には直観に反するようです。一部のデータを「ロード」するとは、データベースにデータを挿入することを意味します。したがって、「アンロード」は、データが削除されることを意味します...
Jeffrey Kemp、

8
バージョン3.0.04では、このオプションの名前が[エクスポート]に変更されました。
Janis Peisenieks、2011

2
すごい。psの大文字/*CSV*/は機能しませんでしたが、小文字/*csv*/は機能しました。ありがとう!
エランメダン

3
また、方法2はバグに遭遇する可能性があることに注意してください(バージョン3.0.04にも存在します)。行数が多い(3K行程度)とハングするだけです。この古い学校のSQLPLUSを使用しているため、上記の方法1が最初に表示されませんでしたが、次のような場合があります。スプールC:\ Export \ EMP.csv-クエリSELECT * FROM EMP; スプールオフ
ジムP

1
@topr方法1を使用してから、すべてを選択し、コピーしてテキストエディターに貼り付け、csvとして保存します。Excelに直接貼り付けることもできますが、それについてはよくわかりません。
Travis

45

正確に「エクスポート」するわけではありませんが、エクスポートするグリッドで行を選択(またはCtrl- Aすべてを選択するには)し、Ctrl-でコピーできますC

デフォルトはタブ区切りです。これをExcelまたは他のエディターに貼り付けて、区切り文字を自由に操作できます。

また、あなたが使用している場合Ctrl- Shift- C代わりにCtrl- C、あなたはまた、列ヘッダをコピーします。


5
すごい、私は特にヘッダーをコピーする方法を探していました。ありがとう!
ミシュキン

3
唯一の問題は、行数が多い場合、データセット全体を再度クエリする必要があることを意味します。クエリが長時間実行されている場合は、最初のページを待ち、ctrl + Aを押した後、すべてのページを待ちます。言い換えれば、優れたソリューションですが、ほとんどの場合にのみ機能し、比較的高速または小規模なクエリに適しています。
エランメダン

長い行数では、コピーされたものを削除します!これは使用しないでください。
2016

@Markそれが自分で起こるのを見たことがない。最初の50行だけを保持しましたか?もしそうなら、そのための別の好みがあります。グリッドに現在あるものだけをコピーしますが、グリッドの一番下までスクロールすると、SQL Devは自動的により多くの行をフェッチするので、誰かがそれをバグとして解釈する可能性があることがわかります。
BQ。

1
私はこれを43K行のデータで試してみましたが、それは永久に実行されます-エクスポートオプションの方がはるかに高速です。数行のデータしかない場合、これはすばらしいことです。
izikandrw 2017

28

参考までに、や/*csv*/ などの他の形式をで置き換えることができます。select は、たとえばクエリ結果を含むxmlドキュメントを返します。クエリからxmlを返す簡単な方法を探しているときに、この記事を見つけました。/*xml*//*html*//*xml*/ * from emp


4
/ * insert * /は特に便利です。
jeremyjjbrown 2014

ファイルはどこに行きますか?
アノマリー

気にしないで、 "スクリプトとして実行"の部分はよく見ましたが、これが通常の実行ボタンとは異なることに気づきませんでした。
異常

4

問題が発生したすべての人に参考までに、CSVタイムスタンプのエクスポートにバグがあり、数時間作業しただけです。エクスポートする必要があるいくつかのフィールドのタイプはタイムスタンプでした。現在のバージョン(この投稿の時点では3.0.04)でも、CSVエクスポートオプションはタイムスタンプの周りにグループ化記号を配置できません。タイムスタンプのスペースがインポートを壊したので非常にイライラします。私が見つけた最良の回避策は、すべてのタイムスタンプにTO_CHAR()を使用してクエリを書くことでした。これにより、誰かが時間を節約できること、またはOracleが次のリリースで成功することを願っています。


1
私のバージョン3.0.04にはまだ、大きなエクスポートで停止するというバグがあります(私のものは3K行です)。私の簡単な修正は、代わりにSQLPLUSを使用することでした:
Jim P

私の場合、空間データ型(docs.oracle.com/cd/B19306_01/appdev.102/b14255/…)はMDSYS.SDO_GEOMETRY(2001,8307,MDSYS.SDO_POINT_TYPE(-122.39096,37.79251,NULL),NULL,NULL)、引用符で囲まずに、このように(コンマに注意して)エクスポートされていました。また、動的SQLを使用しているため、これらの列をTO_CHAR()できません。助言がありますか?
Red Pea

動的SQLを使用して*を選択しているだけですが(空間データ型の単一のSQL列の例外としてこれを変更したくない)、2つのことを試すことができます。1)次のような別のCOLSEPを使用します。 '|'、または2)SELECTステートメントの前に、docs.oracle.com / cd / B19306_01 / server.102 / b14357 / ch12013.htm
The Red Pea

2

SQL開発者からローカルシステムにエクスポートする。

Path : C:\Source_Table_Extract\des_loan_due_dtls_src_boaf.csv

    SPOOL "Path where you want to save the file"
    SELECT /*csv*/ * FROM TABLE_NAME;

1

CSVエクスポートはデータをエスケープしません。\結果の文字列が。ではなく\"エスケープされたように見えるため、文字列が終了することに注意してください。次に、数が間違っていて、行全体が壊れています。"\"


それはおそらくバグではありません-引用符をエスケープする方法を決定できます。デフォルトでは、バックスラッシュではなく、別の引用符でエスケープします。その場合、"foo\"は完全に有効な引用符付き文字列です。
ケンウィリアムズ

事前に知っていれば、\をすべて\\に置き換えるのは簡単です。ありがとう!
jpaugh

はい、ほとんどのCSVインポートツールでは十分にシンプルで間違っている可能性があります。
Wormbo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.