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ファイルとして保存すると、うまくインポートできる場合があります。