Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How do I populate null for column missing for external tables | Oracle | PLSQL

I have been stuck at this moment not getting what I need to do

I have a file called – employee.csv with 4 columns

EMPID,EMPNAME,EMPAGE,EMPCREATION
1,ABC,12,202190211
2,XYZ,24,202190211
3,HJK,25,202190211

My employee table structure

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

create table employee
(
  empid number,
  empname varchar2(255),
  empage  varchar2(255),
  empcreation date
  emprole varchar2(255),
  empgroup varchar2(255)  
)

As you see my above table has 6 columns and my data file has only 4 columns

When I am using oracle external to load files my external table is empty

   create table demo_employee
   ( 
      empid number,
      empname varchar2(255),
      empage  varchar2(255),
      empcreation date
      emprole varchar2(255),
      empgroup varchar2(255)  
   )organization external ( type oracle_loader default directory ABC access parameters 
    ( fields terminated by ',') location ('employee.csv')reject limit unlimited;

My external table is created but no records in it. In case my column is missing in my file then data should be populated for it as NULL and proceed.

>Solution :

Did you check log file? It probably says that date format is invalid. empcreation sounds like a date, and you want to put 202190211 in there. What is it? 2021 might be a year; what’s 9 that follows? Or 90?

I modified sample data so that it actually represents valid date values:

1,ABC,12,20230423  --> 23rd of April 2023
2,XYZ,24,20230427
3,HJK,25,20210903

Then, create table (for prettier output, I modified column lengths):

SQL> CREATE TABLE employee
  2  (
  3     empid         NUMBER,
  4     empname       VARCHAR2 (10),
  5     empage        VARCHAR2 (10),
  6     empcreation   DATE,
  7     emprole       VARCHAR2 (10),
  8     empgroup      VARCHAR2 (10)
  9  );

Table created.

External table; note missing field values are null and empcreation‘s datatype (varchar2, not date):

SQL> CREATE TABLE demo_employee
  2  (
  3     empid         NUMBER,
  4     empname       VARCHAR2 (10),
  5     empage        VARCHAR2 (10),
  6     empcreation   VARCHAR2 (10),
  7     emprole       VARCHAR2 (10),
  8     empgroup      VARCHAR2 (10)
  9  )
 10  ORGANIZATION EXTERNAL
 11     (
 12        TYPE oracle_loader
 13        DEFAULT DIRECTORY dpdir
 14        ACCESS PARAMETERS (RECORDS DELIMITED BY NEWLINE
 15                           FIELDS TERMINATED BY "," MISSING FIELD VALUES ARE NULL)
 16        LOCATION ('test_so.csv'))
 17     REJECT LIMIT UNLIMITED;

Table created.

Is anything in there? Yes!

SQL> SELECT * FROM demo_employee;

     EMPID EMPNAME    EMPAGE     EMPCREATIO EMPROLE    EMPGROUP
---------- ---------- ---------- ---------- ---------- ----------
         1 ABC        12         20230423
         2 XYZ        24         20230427
         3 HJK        25         20210903

Now, transfer data into the target table, providing format mask for empcreation:

SQL> INSERT INTO employee (empid,
  2                        empname,
  3                        empage,
  4                        empcreation)
  5     SELECT empid, empname, empage, TO_DATE (empcreation, 'yyyymmdd') FROM demo_employee;

3 rows created.

Final result:

SQL> SELECT * FROM employee;

     EMPID EMPNAME    EMPAGE     EMPCREATIO EMPROLE    EMPGROUP
---------- ---------- ---------- ---------- ---------- ----------
         1 ABC        12         23.04.2023
         2 XYZ        24         27.04.2023
         3 HJK        25         03.09.2021

SQL>
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading