sqlの改行コード
Windows 系 : CR + LF
CR:CHR(13)
LF:CHR(10)
select replace(dummy, CHR(13)||CHR(10), ' ') as "改行抜きテスト項目" from dual
↑でdbに格納されているテキストデータを改行無しで抜き取れます。
impコマンドで何回やってもCSV読み込みに失敗したため
別な方法を探していたら下記のような方法でcsvをsqlで取り込めるみたいです。
ついでにdbからcsvの方法も。
-- import.bat --
sqlldr id/pass@sev control=c:\imp.ctl log=c:imp.log
----
-- imp.ctl --
load data
infile 'data.csv'
into table MasterTable
FIELDS TERMINATED BY ','
( name char(256) age
)
----
-- export.bat --
SQLPLUS @c:\export.sql
--
-- export.sql --
/* 列名表示無 */
set heading off
/* ヘッダーを非表示 */
set pagesize 0
/* メッセージ非表示 */
set feedback off
/* 行の後ろのスペースを消去 */
set trimspool on
/* 行に表示する文字数を設定 */
SET linesize 100
/* コンソールメッセージを非表示 */
set echo off
CONNECT id/pass@sev
SPOOL c:\data.csv
select name ,age
from dual
/
SPOOL OFF
EXIT
----
ちなみに「データ・ファイルのフィールドが最大長を超えています」というエラーは
(255バイトを超えるものに対して)ctlファイル内にサイズ指定が無い場合に発生します。
