Oracle SQL*Plus で csvファイルの作成(エクスポート) | WEBエンジニア社長のブログ

Oracle SQL*Plus で csvファイルの作成(エクスポート)

Oracle の SQL*Plus を使ってcsvファイルを作成する方法です。


Oracle から SQL Server へあるテーブルを丸ごとコピーする必要がありました。

しかし、今回1回限りのことですし、Oracle Client をSQL Server がインストールされているサーバーにコピーするのも面倒なので、SQL*Plus を使ってcsvファイルを作成することにしました。


SQL*Plus で下記を実行します。



set echo off
set heading off
set termout off
set pause off
set pagesize 0
set linesize 1000
set trimspool on
set feedback off

spool C:\data_exp.csv
SELECT '"'||id||'","'||name||'","'||zip||'","'||address||'"' FROM customers;
spool off


結果はこのようになります。



SQL> SELECT '"'||id||'","'||name||'","'||zip||'","'||address||'"' FROM customers;
"1","小山内","230-0021","神奈川県"

"2","田中,裕","117-0002","東京都"

"3","鈴木","420-0033","千葉県"



この結果の1行目を下記のように変更すれば、SQL Server にインポートする際に、1行目を列名としてそのまま使うことができます。



"id","name","zip","address



また、各列は「"」で囲まれていますから、2行目の「田中,裕」というデータがあったとしても、列の区切りだと判断されず、SQL Server にインポートするときにエラーになったりしません。


もし、この方法で作成したcsvファイルからうまくインポートできない場合は、マイクロソフト エクセルなどでcsvファイルを開き、再度csvファイルとして保存すると、うまくインポートできる場合があります。