dbTalk Databases Forums  

SQLLDR

comp.databases.oracle.tools comp.databases.oracle.tools


Discuss SQLLDR in the comp.databases.oracle.tools forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
The Magnet
 
Posts: n/a

Default SQLLDR - 02-09-2011 , 08:44 AM






Here is a weird one, I am using SQLLDR to load a comma delimited
file. The last column in the record is numeric. If there is no
trailing comma after the field, I get a numeric error. If I place a
trailing comma, everything loads fine??

Any thoughts? I provided a line of data and the control file.

AXFN ,ISHARS-MS AC-US,ETF ,
24.95,24.95,0.32,2608,24.1,25.21,ISHARES MSCI ACWI EX US FINANCIALS
SECTO,BLACKROCK ,MSCI ALL COUNTRY WORLD
EX USA FINANCIALS,24.73,0.48,20101221,0,N/A

LOAD DATA
INFILE *
TRUNCATE
INTO TABLE etf_data
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(ticker "TRIM(:ticker)",
company_name "TRIM(:company_name)",
etf_etn "TRIM(:etf_etn)",
daily_open_price "CASE WHEN TRIM(AILY_OPEN_PRICE)='N/A'
THEN NULL ELSE AILY_OPEN_PRICE END" ,
daily_low_price "CASE WHEN TRIM(AILY_LOW_PRICE)='N/A'
THEN NULL ELSE AILY_LOW_PRICE END" ,
weekly_dividend "CASE WHEN TRIM(:WEEKLY_DIVIDEND)='N/A'
THEN NULL ELSE :WEEKLY_DIVIDEND END" ,
monthly_volume "CASE WHEN TRIM(:MONTHLY_VOLUME)='N/A'
THEN NULL ELSE :MONTHLY_VOLUME END" ,
monthly_low_price "CASE WHEN TRIM(:MONTHLY_LOW_PRICE)='N/A'
THEN NULL ELSE :MONTHLY_LOW_PRICE END" ,
monthly_high_price "CASE WHEN TRIM(:MONTHLY_HIGH_PRICE)='N/
A' THEN NULL ELSE :MONTHLY_HIGH_PRICE END" ,
full_name "TRIM(:full_name)",
sponser "TRIM(:sponser)",
benchmark "TRIM(:benchmark)",
monthly_nav "CASE WHEN TRIM(:MONTHLY_NAV)='N/A' THEN
NULL ELSE :MONTHLY_NAV END" ,
annual_operating_expense "CASE WHEN
TRIM(:ANNUAL_OPERATING_EXPENSE)='N/A' THEN NULL
ELSE :ANNUAL_OPERATING_EXPENSE END" ,
dividend_ex_date "CASE WHEN
TRIM(IVIDEND_EX_DATE)='----------' THEN NULL ELSE
TO_DATE(IVIDEND_EX_DATE,'YYYYMMDD') END",
dividend_yield "CASE WHEN TRIM(IVIDEND_YIELD)='N/A'
THEN NULL ELSE IVIDEND_YIELD END" ,
etf_rank "CASE WHEN TRIM(:ETF_RANK)='N/A' THEN
NULL ELSE :ETF_RANK END"
)

Reply With Quote
  #2  
Old   
ddf
 
Posts: n/a

Default Re: SQLLDR - 02-09-2011 , 09:41 AM






On Feb 9, 8:44*am, The Magnet <a... (AT) unsu (DOT) com> wrote:
Quote:
Here is a weird one, I am using SQLLDR to load a comma delimited
file. *The last column in the record is numeric. *If there is no
trailing comma after the field, I get a numeric error. *If I place a
trailing comma, everything loads fine??

Any thoughts? *I provided a line of data and the control file.

AXFN * * *,ISHARS-MS AC-US,ETF *,
24.95,24.95,0.32,2608,24.1,25.21,ISHARES MSCI ACWI EX US FINANCIALS
SECTO,BLACKROCK * * * * * * * * * * * * * * * ,MSCI ALL COUNTRY WORLD
EX USA FINANCIALS,24.73,0.48,20101221,0,N/A

LOAD DATA
INFILE *
TRUNCATE
INTO TABLE etf_data
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
*(ticker * * * * * * * * * * "TRIM(:ticker)",
* company_name * * * * * * * "TRIM(:company_name)",
* etf_etn * * * * * * * * * *"TRIM(:etf_etn)",
* daily_open_price * * * * * "CASE WHEN TRIM(AILY_OPEN_PRICE)='N/A'
THEN NULL ELSE AILY_OPEN_PRICE END" ,
* daily_low_price * * * * * *"CASE WHEN TRIM(AILY_LOW_PRICE)='N/A'
THEN NULL ELSE AILY_LOW_PRICE END" ,
* weekly_dividend * * * * * *"CASE WHEN TRIM(:WEEKLY_DIVIDEND)='N/A'
THEN NULL ELSE :WEEKLY_DIVIDEND END" ,
* monthly_volume * * * * * * "CASE WHEN TRIM(:MONTHLY_VOLUME)='N/A'
THEN NULL ELSE :MONTHLY_VOLUME END" ,
* monthly_low_price * * * * *"CASE WHEN TRIM(:MONTHLY_LOW_PRICE)='N/A'
THEN NULL ELSE :MONTHLY_LOW_PRICE END" ,
* monthly_high_price * * * * "CASE WHEN TRIM(:MONTHLY_HIGH_PRICE)='N/
A' THEN NULL ELSE :MONTHLY_HIGH_PRICE END" ,
* full_name * * * * * * * * *"TRIM(:full_name)",
* sponser * * * * * * * * * *"TRIM(:sponser)",
* benchmark * * * * * * * * *"TRIM(:benchmark)",
* monthly_nav * * * * * * * *"CASE WHEN TRIM(:MONTHLY_NAV)='N/A' THEN
NULL ELSE :MONTHLY_NAV END" ,
* annual_operating_expense * "CASE WHEN
TRIM(:ANNUAL_OPERATING_EXPENSE)='N/A' THEN NULL
ELSE :ANNUAL_OPERATING_EXPENSE END" ,
* dividend_ex_date * * * * * "CASE WHEN
TRIM(IVIDEND_EX_DATE)='----------' THEN NULL ELSE
TO_DATE(IVIDEND_EX_DATE,'YYYYMMDD') END",
* dividend_yield * * * * * * "CASE WHEN TRIM(IVIDEND_YIELD)='N/A'
THEN NULL ELSE IVIDEND_YIELD END" ,
* etf_rank * * * * * * * * * "CASE WHEN TRIM(:ETF_RANK)='N/A' THEN
NULL ELSE :ETF_RANK END"
)
Enclose the N/A in quotes and it should work without the additional
comma.


David Fitzjarrell

Reply With Quote
  #3  
Old   
The Magnet
 
Posts: n/a

Default Re: SQLLDR - 02-09-2011 , 10:38 AM



On Feb 9, 9:41*am, ddf <orat... (AT) msn (DOT) com> wrote:
Quote:
On Feb 9, 8:44*am, The Magnet <a... (AT) unsu (DOT) com> wrote:



Here is a weird one, I am using SQLLDR to load a comma delimited
file. *The last column in the record is numeric. *If there is no
trailing comma after the field, I get a numeric error. *If I place a
trailing comma, everything loads fine??

Any thoughts? *I provided a line of data and the control file.

AXFN * * *,ISHARS-MS AC-US,ETF *,
24.95,24.95,0.32,2608,24.1,25.21,ISHARES MSCI ACWI EX US FINANCIALS
SECTO,BLACKROCK * * * * * * * * * * * * * ** ,MSCI ALL COUNTRY WORLD
EX USA FINANCIALS,24.73,0.48,20101221,0,N/A

LOAD DATA
INFILE *
TRUNCATE
INTO TABLE etf_data
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
*(ticker * * * * * * * * * * "TRIM(:ticker)",
* company_name * * * * * * * "TRIM(:company_name)",
* etf_etn * * * * * * * * * *"TRIM(:etf_etn)",
* daily_open_price * * * * * "CASE WHEN TRIM(AILY_OPEN_PRICE)='N/A'
THEN NULL ELSE AILY_OPEN_PRICE END" ,
* daily_low_price * * * * * *"CASE WHEN TRIM(AILY_LOW_PRICE)='N/A'
THEN NULL ELSE AILY_LOW_PRICE END" ,
* weekly_dividend * * * * * *"CASE WHEN TRIM(:WEEKLY_DIVIDEND)='N/A'
THEN NULL ELSE :WEEKLY_DIVIDEND END" ,
* monthly_volume * * * * * * "CASE WHEN TRIM(:MONTHLY_VOLUME)='N/A'
THEN NULL ELSE :MONTHLY_VOLUME END" ,
* monthly_low_price * * * * *"CASE WHEN TRIM(:MONTHLY_LOW_PRICE)='N/A'
THEN NULL ELSE :MONTHLY_LOW_PRICE END" ,
* monthly_high_price * * * * "CASE WHEN TRIM(:MONTHLY_HIGH_PRICE)='N/
A' THEN NULL ELSE :MONTHLY_HIGH_PRICE END" ,
* full_name * * * * * * * * *"TRIM(:full_name)",
* sponser * * * * * * * * * *"TRIM(:sponser)",
* benchmark * * * * * * * * *"TRIM(:benchmark)",
* monthly_nav * * * * * * * *"CASE WHEN TRIM(:MONTHLY_NAV)='N/A' THEN
NULL ELSE :MONTHLY_NAV END" ,
* annual_operating_expense * "CASE WHEN
TRIM(:ANNUAL_OPERATING_EXPENSE)='N/A' THEN NULL
ELSE :ANNUAL_OPERATING_EXPENSE END" ,
* dividend_ex_date * * * * * "CASE WHEN
TRIM(IVIDEND_EX_DATE)='----------' THEN NULL ELSE
TO_DATE(IVIDEND_EX_DATE,'YYYYMMDD') END",
* dividend_yield * * * * * * "CASE WHEN TRIM(IVIDEND_YIELD)='N/A'
THEN NULL ELSE IVIDEND_YIELD END" ,
* etf_rank * * * * * * * * * "CASE WHEN TRIM(:ETF_RANK)='N/A' THEN
NULL ELSE :ETF_RANK END"
)

Enclose the N/A in quotes and it should work without the additional
comma.

David Fitzjarrell
Looks like you were right. Very strange. I thought SQLLDR would
resolve the issue before it attempts to insert it and notice it is not
numeric. But weird that it is only the last column causing the issue.

Reply With Quote
  #4  
Old   
onedbguru
 
Posts: n/a

Default Re: SQLLDR - 02-11-2011 , 04:04 PM



On Feb 9, 9:44*am, The Magnet <a... (AT) unsu (DOT) com> wrote:
Quote:
Here is a weird one, I am using SQLLDR to load a comma delimited
file. *The last column in the record is numeric. *If there is no
trailing comma after the field, I get a numeric error. *If I place a
trailing comma, everything loads fine??

Any thoughts? *I provided a line of data and the control file.

AXFN * * *,ISHARS-MS AC-US,ETF *,
24.95,24.95,0.32,2608,24.1,25.21,ISHARES MSCI ACWI EX US FINANCIALS
SECTO,BLACKROCK * * * * * * * * * * * * * * * ,MSCI ALL COUNTRY WORLD
EX USA FINANCIALS,24.73,0.48,20101221,0,N/A

LOAD DATA
INFILE *
TRUNCATE
INTO TABLE etf_data
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
*(ticker * * * * * * * * * * "TRIM(:ticker)",
* company_name * * * * * * * "TRIM(:company_name)",
* etf_etn * * * * * * * * * *"TRIM(:etf_etn)",
* daily_open_price * * * * * "CASE WHEN TRIM(AILY_OPEN_PRICE)='N/A'
THEN NULL ELSE AILY_OPEN_PRICE END" ,
* daily_low_price * * * * * *"CASE WHEN TRIM(AILY_LOW_PRICE)='N/A'
THEN NULL ELSE AILY_LOW_PRICE END" ,
* weekly_dividend * * * * * *"CASE WHEN TRIM(:WEEKLY_DIVIDEND)='N/A'
THEN NULL ELSE :WEEKLY_DIVIDEND END" ,
* monthly_volume * * * * * * "CASE WHEN TRIM(:MONTHLY_VOLUME)='N/A'
THEN NULL ELSE :MONTHLY_VOLUME END" ,
* monthly_low_price * * * * *"CASE WHEN TRIM(:MONTHLY_LOW_PRICE)='N/A'
THEN NULL ELSE :MONTHLY_LOW_PRICE END" ,
* monthly_high_price * * * * "CASE WHEN TRIM(:MONTHLY_HIGH_PRICE)='N/
A' THEN NULL ELSE :MONTHLY_HIGH_PRICE END" ,
* full_name * * * * * * * * *"TRIM(:full_name)",
* sponser * * * * * * * * * *"TRIM(:sponser)",
* benchmark * * * * * * * * *"TRIM(:benchmark)",
* monthly_nav * * * * * * * *"CASE WHEN TRIM(:MONTHLY_NAV)='N/A' THEN
NULL ELSE :MONTHLY_NAV END" ,
* annual_operating_expense * "CASE WHEN
TRIM(:ANNUAL_OPERATING_EXPENSE)='N/A' THEN NULL
ELSE :ANNUAL_OPERATING_EXPENSE END" ,
* dividend_ex_date * * * * * "CASE WHEN
TRIM(IVIDEND_EX_DATE)='----------' THEN NULL ELSE
TO_DATE(IVIDEND_EX_DATE,'YYYYMMDD') END",
* dividend_yield * * * * * * "CASE WHEN TRIM(IVIDEND_YIELD)='N/A'
THEN NULL ELSE IVIDEND_YIELD END" ,
* etf_rank * * * * * * * * * "CASE WHEN TRIM(:ETF_RANK)='N/A' THEN
NULL ELSE :ETF_RANK END"
)

My first and second thoughts would be to strongly encourage you the
next time create a dummy test case and not post your companies data
online- even if it is just one line. In most shops, this would get you
fired. ans as David stated, enclose the last field in quotes OR do not
provide a value at all

a,b,c,d,

Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.3
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.