开发者

SQLPlus export to CSV (output format problem)

I'm facing an issue with an interface script, supposed to export the content of some table of an ORACLE database into CSV file, which is then followed by an import of those CSV into a MYSQL database.

STEP1: SQLPlus export to CSV

set headsep off  
set heading off
set term off
set echo off
SET  RECSEPCHAR \n
set pagesize 0
set linesize 0
trimspool on
SET FEEDBACK OFF
spool as_ex_feature.csv
select '"AS'||'"|"'||feature_group||'"|"'||feature_desc||'"|"
    ||feature_order||'"|"'||prod_code||'"'
from MYVIEW WHERE MYCONDITIONS;
spool off;

-> this step is generating the CSV file, but the format seems incorrect, as I can find some carriage return in the output. Also you'll see in STEP2 that we define an "ENCLOSED BY" value how could I get that one included in the export format (doesn't seem to be the case right now).

STEP 2: MYSQL load

LOAD DATA INFILE 'mycsvfile' REPLACE INTO TABLE `mt_feature` 
FIELDS TERMINATED BY '|'
ENCLOSED BY '"' 
ESCAPED BY '\\'
LINES TERMINATED BY '\n';

This script had to be rebuilt for some technical reasons and the Mysql part had not been changed and is working fine with a proper CSV file to import.

The issue seem to be coming from that SQLPlus export, where I need to admit I don't have much knowledge on. Maybe I should use another method to get those files generated?

Please let me kno开发者_高级运维w if you need additional details, I feel blind...


Script running on oracle 10g, Linux, Mysql 4.x

Thanks!


SET LINESIZE 0 isn't valid, the value has to be between 1 and 32767. So I imagine it's wrapping the content at the default line length, which is 80 unless you've already got it set in a glogin script.


If you prefix any lines of code with (at least) four spaces in SO then it'll be formatted correctly, e.g.

select "AS'||'"|"'||
    feature_group||'"|"'||
    feature_desc||'"|"'||
    feature_order||'"|"'||
    prod_code||'"' 
from MYVIEW 
WHERE MYCONDITIONS;

Sounds like you may need to replace any embedded newline chars in the stored data....

SELECT "AS'||'"|"'||
    TRANSLATE(feature_group, CHR(10), '\\n') ||'"|"'||
(etc).

And I'm not sure about setting the linesize to 0.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜