As far as I know, there is no way to ignore the to_number space, and you cannot do anything in SQL * Loader to prepare it. If you cannot delete it by pre-processing the file that you suggested, this is not an option, then you will need to use the line function at some point. I would not expect it to add a huge amount of processing, higher than what to_number will do anyway, but I always tried and saw, and did not expect anything - avoiding string functions a bit like premature optimization. In any case, the simplest can be replace :
select to_number(replace('1.47654345670000000000 E010',' ',''), '9.99999999999999999999EEEE') from dual;
or for display purposes only:
column num format 99999999999 select to_number(replace('1.47654345670000000000 E010',' ',''), '9.99999999999999999999EEEE') as num from dual NUM
You can define your own function to simplify the management file a little, but not sure if it's worth it.
Two other options come to mind. (a) Download the temporary table as varchar , and then populate the actual table with to_number(replace()) ; but I doubt it will be any improvement in performance and could be significantly worse. Or (b) if you use 11g, load into the varchar column in the real table and make your column a virtual column column that uses functions.
Actually, the third option ... does not use SQLLoader at all, but use the CSV file as an external table and fill in your real table. You still have to do to_number(replace()) , but you can see the difference in performance than doing it in SQLLoader. The difference may be that it is certainly worse, but it may be worth a try.
source share