1. Get rid of all advertisements and get unlimited access to documents by upgrading to Premium Membership. Upgrade to Premium Now and also get a Premium Badge!

How to import a .csv file or file contents into a table in sql

Discussion in 'SQL PL/SQL' started by madpop, Nov 24, 2014.

  1. madpop

    madpop Guest

    Hi got a issue with sql i am a newbie to sql and having a doubt on the following issues

    1. how to create a database in sql ? (im using scott as username )

    2. after creating a database then how to create a table in that data base .

    3. after creating a table i want to import the contents of a .csv file into table.

    so any suggestions ?
  2. krasnoslobodtsev_si

    krasnoslobodtsev_si Forum Genius

    Likes Received:
    Trophy Points:
    Russian Federation
  3. zargon

    zargon Community Moderator Forum Guru

    Likes Received:
    Trophy Points:
    Aurora, CO

    You have a database if you're using the SCOTT user; Oracle is NOT like SQL Server. Users have schemas, not databases. Since you do not need to 'create a database' let's address the second questions. The CREATE TABLE statement works wonders to create tables in a given schema:

    Code (SQL):

    -- Create sample tables
    -- Create them parallel, necessary
    -- to get a Smart Scan on these tables
            empid   NUMBER,
            empnm   varchar2(40),
            empsal  NUMBER,
            empssn  varchar2(12),
            CONSTRAINT emp_pk PRIMARY KEY (empid)
    ) ;


    The above is a simple example of creating a table. In your case that table would be owned by the user SCOTT, if you are connected as SCOTT when you execute that statement. So let's say you've created that table; if you have a CSV file you want to 'import' into that table you would use a tool called SQL Loader. Sergey has provided a link to the documentation for SQL Loader so it would be a good idea to read it. An example of using SQL Loader is shown below:

    Code (SQL):

    SQL> CREATE TABLE loader_tst(mykey NUMBER,
      2        myval varchar2(40),
      3        mydt    DATE,
      4        CONSTRAINT loader_tst_pk
      5        PRIMARY KEY(mykey)
      6  )
      7  /

    TABLE created.

    SQL> $sqlldr [EMAIL="userid=bingnorfer/plunkenfutz@poojooba"]userid=bingnorfer/plunkenfutz@poojooba[/EMAIL] control=loader_tst1.ctl log=loader_test1.log
    SQL> SELECT * FROM loader_tst;

         MYKEY MYVAL                                    MYDT                                                                                              
    ---------- ---------------------------------------- ---------                                                                                        
             1 Test 1                                   03-NOV-13                                                                                        
             2 Test 1                                   03-NOV-13                                                                                        
             3 Test 1                                                                                                                                    
             4 Test 1                                   03-NOV-13                                                                                        
             5 Test 1                                   03-NOV-13                                                                                        
             6 Test 1                                   03-NOV-13                                                                                        
             7 Test 1                                   03-NOV-13                                                                                        
             8 Test 1                                   03-NOV-13                                                                                        
             9 Test 1                                   03-NOV-13                                                                                        
            10 Test 1                                                                                                                                    
            11 Test 1                                   03-NOV-13                                                                                        

         MYKEY MYVAL                                    MYDT                                                                                              
    ---------- ---------------------------------------- ---------                                                                                        
            12 Test 1                                   03-NOV-13                                                                                        
            13 Test 1                                   03-NOV-13                                                                                        
            14 Test 1                                   03-NOV-13                                                                                        
            15 Test 1                                                                                                                                    
            16 Test 1                                   03-NOV-13                                                                                        
            17 Test 1                                   03-NOV-13                                                                                        
            18 Test 1                                                                                                                                    
            19 Test 1                                   03-NOV-13                                                                                        
            40 Test 1 Yapoopa Nooba Paloobboodink       03-NOV-13                                                                                        

    20 ROWS selected.


    This requires a control file to tell SQL Loader which file to use as a source, how the file is formatted and where the data is to go:

    load data
    infile loader_tst1.dat <--- this will be the name of your CSV file
    into table loader_tst
    fields terminated by ',' optionally enclosed by '"' <--- This defines how the data is formatted in the CSV file
    (mykey , myval, mydt "to_date(trim:)mydt), 'DD-MON-RR')")

    My CSV file looks like this:

    1,"Test 1","03-NOV-13"
    2,"Test 1","03-NOV-13"
    3,"Test 1"," "
    4,"Test 1","03-NOV-13"
    5,"Test 1","03-NOV-13"
    6,"Test 1","03-NOV-13"
    7,"Test 1","03-NOV-13"
    8,"Test 1","03-NOV-13"
    9,"Test 1","03-NOV-13"
    10,"Test 1"," "
    11,"Test 1","03-NOV-13"
    12,"Test 1","03-NOV-13"
    13,"Test 1","03-NOV-13"
    14,"Test 1","03-NOV-13"
    15,"Test 1"," "
    16,"Test 1","03-NOV-13"
    17,"Test 1","03-NOV-13"
    18,"Test 1"," "
    19,"Test 1","03-NOV-13"
    40,"Test 1 Yapoopa Nooba Paloobboodink","03-NOV-13"

    SQL Loader, given a table, a valid definition of how the data is formatted and a valid CSV file can load that data into a table, as illustrated above.

    You can also use external tables (another form of SQL Loader processing) and Sergey provided a link to that in the documentation as well. It would be good to read up on that as well.