2016-08-16 8 views
1

スプールを使用して選択クエリ出力をテキストファイルにエクスポートする必要があります。既定では、出力は二重引用符を列の周りに追加します。それを防ぐ方法は? クエリは1つの列のみを返します。oracleからcsvにスプールしている間に二重引用符を避ける

理想的には、出力からヘッダーと二重引用符を削除する必要があります。以下はoracle Developerで使用しているスクリプト・ファイルです。見出しは削除されません。

set echo off 
SET HEADING OFF 
SET PAGESIZE 0 
SET COLSEP '' 
spool 'D:\public\cvs_txPCG.txt' 
select /*csv*/ 
pcg from temptx; 
spool off; 

出力

"PCG" 
"76259737020150320000504281565213310052440093515652109.2909.290101" 
"19519905620160502000504283153419040044861008644759203.3903.390101" 
"49424051620160220000504284594314590009220713032964404.3804.380202" 
"88761197020151025000504284594315180036700812132964401.9901.990101" 
+0

ここをクリック[Oracle/SQL * PlusのCSVファイルを引用符なしでスプールする](http://luckylarry.co.uk/programming-tutorials/oracle/spool-a-csv-file-from-oracle- ... – Plirkee

+0

@ Plirkee ..あなたのリンクを確認してください。動作しません。 – XING

+0

@Raj_Te ok - 固定 – Plirkee

答えて

5

:トリム機能について

select /*csv*/ 
trim(both '"' from pcg) as pcg from temptx; 

Oracleマニュアルを参照してください。これをやや簡単に行う方法は、sqlformatコマンドを使用しますが、sqlformat delimitedyou have to have the string enclosedの場合もあります。

あなたがあなたの文字列に区切り文字を入力しないと、単一の列にCSV形式を使用しても意味がないようです。その列を実際にエクスポートしているときにデリミタがない場合は、/*csv*/ディレクティブを省略してください。区切り文字を含む列や文字列が複数ある場合、エンクロージャーは、Excelやその他の外部ツールで開くときに間違って区切られた区切り文字を停止するのに便利です。

あなたが本当にしたい場合はCSVあなたはまだあなたがファイルにスプールすることができますカンマリテラルを持つ列(複数可)、連結することにより、出力を手動で構築することができますいずれかのエンクロージャなし形式:

select pcg ||','|| some_other_col ||','|| etc from ... 

それともをRun Statement(Ctrl-Enter)を使用してクエリを実行し、出力を右クリックすると表示されるコンテキストメニューからデータグリッドから結果をエクスポートすることができます。エクスポートしてCSV形式または区切り形式を選択すると、ヘッダーと区切り文字とエンクロージャーを含めるかどうかを選択できます。「none」を選択することもできます。あなたは各エクスポートにそれを設定したくない場合は、[ツール] - > [環境設定から、それをデフォルトとして設定することができます:あなたはしかし/*csv*/ディレクティブまたはsqlformat csvでそれを行うことはできません

enter image description here

+0

パーフェクト!私はCSV指令を削除し、二重引用符と同様に両方のヘッダーがなくなりました。どうもありがとう。しかし、最後の行で「n個の行が選択されました」というメッセージが表示されます。私もそれを避けることはできますか? – kten

+1

それもあります。 "フィードバックをオフにする" – kten

0

二重引用符は、あなたがそれらを削除するトリム()関数を使用することができ、データの一部である場合。あなたが/*csv*/ディレクティブで二重引用符を取り除くことはできません https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions199.htm

+0

二重引用符はデータの一部ではありません。 – kten

関連する問題