Use of sequence numbers while inserting into tables

Hi,
Consider i have a stored procedure where i insert records into 30 to 40 tables.
for example i have a table A and a sequence SEQ_A for that table.
Is there any difference in performance in the following two ways of
insertion,
1. select SEQ_A.NEXTVAL into variable_a FROM DUAL;
INSERT INTO A VALUES(variable_a);
2.INSERT INTO A VALUES (SEQ_A.NEXTVAL).
I have 30 to 40 insert statements like that in method 1.
if i replace it by method 2. will there be any improvement in performance?
Thanks & Regards
Sundar

This could be interesting. I agree that triggers should be used for data integrity, though even better is to only allow write access to tables via stored procedures.
Anyway while you are waiting for the test case that shows triggers are faster, which could take some time, it is quick and easy to come up with a test case that shows the opposite.
SQL> create table t (id number, dummy varchar2(1));
Table created.
real: 40
SQL> insert into t select s.nextval, 'a' from all_objects;
29625 rows created.
real: 5038
SQL> rollback;
Rollback complete.
real: 40
SQL> create trigger tt before insert on t
  2  for each row
  3  begin
  4     select s.nextval into :new.id from dual;
  5  end;
  6  /
Trigger created.
real: 291
SQL> insert into t select null, 'a' from all_objects;
29626 rows created.
real: 13350
SQL> rollback;
Rollback complete.
real: 1082
SQL>Note with triggers even the rollback took longer.
Martin

Similar Messages

  • Date pblem while inserting into table

    hi
    i have table with fields
    USERID VARCHAR2(20)
    TIMEEMTRY DATE
    EVENTID VARCHAR2(20)
    TERMINALSN VARCHAR2(20)
    FSHIFTIN DATE
    while i try to insert using the following statment
    INSERT INTO TEmPATT VALUES ('16',to_date('19/04/2007 7:47:26 PM','DD/MM/YYYY HH:MM:SS AM'),'OUT','00111DA02C14',NULL)
    it shows fomat codeappears twice
    but when i eleminate the time part then it inserts ie
    INSERT INTO TMEPATT VALUES ('16',to_date('19/04/2007','DD/MM/YYYY'),'OUT','00111DA02C14',NULL)
    without using to_date it shows invalid month
    please suggest a solution
    Thanks and regards

    The format for minutes is MI not MM.

  • How to use header information in line records while inserting into table?

    Hi,
    Requirement: Data in flat file needs to be loaded into Oracle Tables.
    File has header information (basically file information, some account info) and Line information ( Actual data need to be loaded to oracle tables).
    File has position based data, first 2 char for Header is 00 and line is 50
    Now, header has some extra info which needs to be loaded along with details lines ( This has to be done using sql loader control file).
    What should be the control file logic to capture header information in details lines?
    Please suggest.
    I am calling this control file from Unix, so I can change the control file definition dynamically by retrieving the first line of the data file and modify the control file before executing the sql loader command. Is there any option to achieve this using SQL LOADER commands?
    Thanks,
    Venkat.

    Pl post details of OS and database versions.
    Use the WHEN clause to load header and detail lines into separate tables, then write PL/SQL code to perform needed post-processing.
    See the examples in section titled "Distinguishing Different Input Record Formats" here http://docs.oracle.com/cd/E11882_01/server.112/e22490/ldr_control_file.htm
    HTH
    Srini

  • Problem while inserting into a table which has ManyToOne relation

    Problem while inserting into a table *(Files)* which has ManyToOne relation with another table *(Folder)* involving a attribute both in primary key as well as in foreign key in JPA 1.0.
    Relevent Code
    Entities:
    public class Files implements Serializable {
    @EmbeddedId
    protected FilesPK filesPK;
    private String filename;
    @JoinColumns({
    @JoinColumn(name = "folder_id", referencedColumnName = "folder_id"),
    @JoinColumn(name = "uid", referencedColumnName = "uid", insertable = false, updatable = false)})
    @ManyToOne(optional = false)
    private Folders folders;
    public class FilesPK implements Serializable {
    private int fileId;
    private int uid;
    public class Folders implements Serializable {
    @EmbeddedId
    protected FoldersPK foldersPK;
    private String folderName;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "folders")
    private Collection<Files> filesCollection;
    @JoinColumn(name = "uid", referencedColumnName = "uid", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Users users;
    public class FoldersPK implements Serializable {
    private int folderId;
    private int uid;
    public class Users implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer uid;
    private String username;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "users")
    private Collection<Folders> foldersCollection;
    I left out @Basic & @Column annotations for sake of less code.
    EJB method
    public void insertFile(String fileName, int folderID, int uid){
    FilesPK pk = new FilesPK();
    pk.setUid(uid);
    Files file = new Files();
    file.setFilename(fileName);
    file.setFilesPK(pk);
    FoldersPK folderPk = new FoldersPK(folderID, uid);
         // My understanding that it should automatically handle folderId in files table,
    // but it is not…
    file.setFolders(em.find(Folders.class, folderPk));
    em.persist(file);
    It is giving error:
    Internal Exception: java.sql.SQLException: Field 'folderid' doesn't have a default value_
    Error Code: 1364
    Call: INSERT INTO files (filename, uid, fileid) VALUES (?, ?, ?)_
    _       bind => [hello.txt, 1, 0]_
    It is not even considering folderId while inserting into db.
    However it works fine when I add folderId variable in Files entity and changed insertFile like this:
    public void insertFile(String fileName, int folderID, int uid){
    FilesPK pk = new FilesPK();
    pk.setUid(uid);
    Files file = new Files();
    file.setFilename(fileName);
    file.setFilesPK(pk);
    file.setFolderId(folderId) // added line
    FoldersPK folderPk = new FoldersPK(folderID, uid);
    file.setFolders(em.find(Folders.class, folderPk));
    em.persist(file);
    My question is that is this behavior expected or it is a bug.
    Is it required to add "column_name" variable separately even when an entity has reference to ManyToOne mapping foreign Entity ?
    I used Mysql 5.1 for database, then generate entities using toplink, JPA 1.0, glassfish v2.1.
    I've also tested this using eclipselink and got same error.
    Please provide some pointers.
    Thanks

    Hello,
    What version of EclipseLink did you try? This looks like bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=280436 that was fixed in EclipseLink 2.0, so please try a later version.
    You can also try working around the problem by making both fields writable through the reference mapping.
    Best Regards,
    Chris

  • System getting hanged whilst using Insert into table select * from table

    I have a peculiar problem.
    I am using the below statements:
    Query 1:
    insert into table ppms.erin_out@ppms_dblink select * from erin_out;
    Query 2:
    insert into table ppms.erin_out@ppms_dblink values(23,'dffgg',12',dfdfdgg,dfdfdg);
    I am in 'interfaces' schema (testing server) and executing above statements. We have testing server and development server, both are identical, i.e one is clone of the other.
    ppms_dblink is created in interfaces schema. ppms_dblink points to different database server which has two schemas 'clarity' and 'ppms'. ppms_dblink is create through authentication details of clarity schema.
    erin_out table is created on ppms schema on the same dababase server pointed by ppms_dblink.
    Question is :
    TOAD hangs while running query 1.
    Query 2 is working perfectly.
    As I have pl/sql script which is using query 1. I want to know why query 1 is creating problem.
    If I use query 2 in my pl/sql query then it may create performance issue as i have to use cursor then.
    On clarity schema, I have insert, update, select, modify rights on ppms.erin_out.
    I have tried same queries from another database server.
    That is I tried queries from 'interfaces' schema of development server ( clone of the testing server ). Its working perfectly.
    Message was edited by:
    user484158

    Dhanchik:
    The table from which I select rows, to insert into table on dblink, is having only one record. It may contatin maximum 100 rows at a time because I am scheduling the procedure through daemon process. Anyway transaction is not more than 100 records. I am trying with just 1 record for testing.
    So 1) Problem is not about the cost, TOAD is getting hanged ( to insert 1 record, cost does not mean much)
    2) there is no large amount of data, so no question of deteriorated performance
    Aron Tunzi:
    I think that should not be problem, because I am able to insert a record through query 2.
    Warren Tolentino :
    I am testing with 1 record only. Its not performance issue.
    Message was edited by:
    &#2352;&#2330;&#2367;&#2340;

  • Error while inserting into MS-SQL Server from Oracle using HS

    Hi,
    I am using hetrogeneous connection.
    I want to insert into MS-SQL Server Table by selecting from Oracle Tables.
    insert into tableone@mssql select * from table2;
    Table2 is in oracle database.
    while executing i'm getting
    ORA-02025: all tables in the SQL statement must be at the remote database
    Please guide me.
    Regards
    Salih KM

    some guy come up a solution by himself before. go ahead and try it
    ORA-02025 error while insert into emp@custard select ....

  • Usage of sequence for uploading data into tables(column store) using CSV

    How to make use of sequence when data is uploaded into table(column store) with the CSV file ?

    Hi Sharada,
    You may have to follow the below steps:
    1) To load the data from flat file to a Staging table using IMPORT command
    2) You have to call the procedure to load the data further into final Table.
    a) Have a look on this procedure to load data :
    SAP HANA: Generic Procedure using Arrays to Load delta data into Tables
    b) See my reply on the syntax on how to use "Sequence"
    Auto-Incrementor in stored procedure!
    You will have to ensure that you frame your insert query in such a way to have the sequence number in the target table.
    Regards,
    Krishna Tangudu

  • Read text file insert into table using utl_file

    Hi
    i have script for read and insert into table but i want error records load into error table so i sent you my script and please fix the error log table
    script
    DECLARE
    v_line VARCHAR2(2000);
    v_file utl_file.file_type;
    v_dir VARCHAR2(250);
    v_filename VARCHAR2(50);
    BEGIN
    v_dir :='MID5010_DOC1TP';
    v_filename := 'OPT_CM_BASE.txt';
    v_file := utl_file.fopen(v_dir, v_filename, 'r');
    LOOP
    BEGIN
    utl_file.get_line(v_file, v_line);
    EXCEPTION
    WHEN no_data_found THEN
    EXIT;
    END ;
    v_line := REPLACE(v_line,'|','|~');
    INSERT
    INTO optum_icd10cm_base VALUES
    ( REPLACE(TRANSLATE(regexp_substr(v_line,'[^|~]+',1,1),'a~','a'),'.'),
    TRANSLATE(regexp_substr(v_line,'[^|~]+',1,2),'a~','a'),
    TRANSLATE(regexp_substr(v_line,'[^|~]+',1,3),'a~','a'),
    TRANSLATE(regexp_substr(v_line,'[^|~]+',1,4),'a~','a'),
    TRANSLATE(regexp_substr(v_line,'[^|~]+',1,5),'a~','a'),
    CASE
    WHEN LENGTH(regexp_substr(v_line,'[^|~]+',1,6)) < 10
    THEN to_date(ltrim(TRANSLATE(regexp_substr(v_line,'[^|~]+',1,6),'a~','a'),'0'),'mm-yyyy')
    ELSE to_date(TRANSLATE(regexp_substr(v_line,'[^|]+',1,6),'a~','a'),'mm-dd-yyyy')
    END,
    CASE
    WHEN LENGTH(regexp_substr(v_line,'[^|~]+',1,7)) < 10
    THEN to_date(ltrim(TRANSLATE(regexp_substr(v_line,'[^|~]+',1,7),'a~','a'),'0'),'mm-yyyy')
    ELSE to_date(TRANSLATE(regexp_substr(v_line,'[^|]+',1,7),'a~','a'),'mm-dd-yyyy')
    END,
    CASE
    WHEN LENGTH(regexp_substr(v_line,'[^|~]+',1,8)) < 10
    THEN to_date(ltrim(TRANSLATE(regexp_substr(v_line,'[^|~]+',1,8),'a~','a'),'0'),'mm-yyyy')
    ELSE to_date(TRANSLATE(regexp_substr(v_line,'[^|]+',1,8),'a~','a'),'mm-dd-yyyy')
    END,
    CASE
    WHEN LENGTH(regexp_substr(v_line,'[^|~]+',1,9)) < 10
    THEN to_date(ltrim(TRANSLATE(regexp_substr(v_line,'[^|~]+',1,9),'a~','a'),'0'),'mm-yyyy')
    ELSE to_date(TRANSLATE(regexp_substr(v_line,'[^|]+',1,9),'a~','a'),'mm-dd-yyyy')
    END,
    CASE
    WHEN LENGTH(regexp_substr(v_line,'[^|~]+',1,10)) < 10
    THEN to_date(ltrim(TRANSLATE(regexp_substr(v_line,'[^|~]+',1,10),'a~','a'),'0'),'mm-yyyy')
    ELSE to_date(TRANSLATE(regexp_substr(v_line,'[^|]+',1,10),'a~','a'),'mm-dd-yyyy')
    END,
    TRANSLATE(regexp_substr(v_line,'[^|~]+',1,11),'a~','a')
    -----commit;
    END LOOP;
    utl_file.fclose(v_file);
    END;
    text file
    A50.0||Short|Long|Full|01-01-2009|01-2009||01-01-2013|09-18-2012|C|
    A50.1||Short|Long|Full|01-01-2009|01-01-2009||001-2013|09-18-2012|C|
    A50.2||Short|Long|Full|01-01-2009|01-01-2009|67|01-01-2013|09-18-2012|C|
    A50.3||Short|Long|Full|011-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A50.4||Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|5|
    A50.5|R|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A50.6||Short|Long||01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A50.7||Short||Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    2345||Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A60.0|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A60.1|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A60.2|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A60.3|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A60.4|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A60.5|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A60.6|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A60.7|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A60.8|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A60.9|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A70.0|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A70.1|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A70.2|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A70.3|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A70.4|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    B222|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A4.1|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A4.2|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A4.3|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A4.4|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A4.5|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A4.6|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A4.7|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A4.8|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A4.9|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A5.0|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A5.1|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A5.2|D|Short|Long|Full|01-01-2009|01-01-2009|01-10-2013|01-01-2013|09-18-2012|C|
    A5.3|D|Short|Long|Full|01-01-2009|01-01-2009|01-10-2013|01-01-2013|09-18-2012|C|
    D642|D|Short|Long|Full|01-01-2009|01-01-2009|01-10-2013|01-01-2013|09-18-2012|C|
    A5.5|D|Short|Long|Full|01-01-2009|01-01-2009|01-10-2013|01-01-2013|09-18-2012|C|
    A5.6|D|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A5.7|C|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A001|C|Short Updated|Long Updated|Full Updated|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A009|C|Short Updated|Long Updated|Full Updated|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A5.10|C|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A0109|C|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    F10.0|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    F10.1|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    F10.2|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    F10.3|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    F10.4|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    F10.5|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    F10.6|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    F10.7|N|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A30|C|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A316|C|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    A317|C|Short|Long|Full|01-01-2009|01-01-2009||01-01-2013|09-18-2012|C|
    ----clearly read text file insert into table and error records load into error table
    please help me

    hI
    i am using utl_file prepared script but i got error like 01861. 00000 - "literal does not match format string"
    script:
    DECLARE
    f utl_file.file_type;
    s VARCHAR2(32000);
    f1 VARCHAR2(100);
    f2 varchar2(100);
    F3 VARCHAR2(100);
    F4 VARCHAR2(100);
    F5 VARCHAR2(100);
    F6 DATE;
    F7 DATE;
    F8 DATE;
    F9 DATE;
    F10 DATE;
    f11 CHAR(1);
    BEGIN
    --DBMS_OUTPUT.ENABLE(100000);
    f := utl_file.fopen('MID5010_DOC1TP', 'OPT_CM_BASE.txt', 'R');
    LOOP
    BEGIN
    UTL_FILE.GET_LINE(f, s);
    f1 := REGEXP_SUBSTR (s,'[^|]+',1,1);
    f2 := REGEXP_SUBSTR (REPLACE(s,'||','||'),'[^|]+', 1,2);
    F3 := REGEXP_SUBSTR (REPLACE(s,'||','||'),'[^|]+', 1,3);
    F4 := REGEXP_SUBSTR (REPLACE(s,'||','||'),'[^|]+', 1,4);
    F5 := REGEXP_SUBSTR (REPLACE(s,'||','||'),'[^|]+', 1,5);
    F6 := to_date(REGEXP_SUBSTR (REPLACE(s,'||','||'),'[^|]+',1,6),'mm-dd-yyyy');
    F8 := to_date(REGEXP_SUBSTR (REPLACE(s,'||','||'),'[^|]+',1,8),'mm-dd-yyyy');
    F7 := to_date(REGEXP_SUBSTR (REPLACE(s,'||','||'),'[^|]+',1,7),'mm-dd-yyyy');
    F9 := to_date(REGEXP_SUBSTR (REPLACE(s,'||','||'),'[^|]+',1,9),'mm-dd-yyyy');
    F10 :=to_date(REGEXP_SUBSTR (REPLACE(s,'||','||') ,'[^|]+',1,10),'mm-dd-yyyy');
    f11 := REGEXP_SUBSTR (REPLACE(s,'||','||'),'[^|]+', 1,11);
    INSERT
    INTO OPTUM_ICD10CM_BASE
    ( CODE,
    STATUS,
    SHORT_DESCRIPTION,
    LONG_DESCRIPTION,
    FULL_DESCRIPTION,
    CODE_EFFECTIVE_DATE,
    CHANGE_EFFECTIVE_DATE,
    TERMINATION_DATE,
    RELEASE_DATE,
    CREATION_DATE,
    VALIDITY
    VALUES
    F1,
    F2,
    F3,
    F4,
    F5,
    F6,
    F7,
    F8,
    F9,
    F10,
    f11
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    EXIT;
    END;
    END LOOP;
    UTL_FILE.FCLOSE(F);
    END;
    please help me(in my org looks utl_file standards only)

  • Unable to perform "insert into table select ...." using DBF_JDBC30

    below i post my code :
    import java.util.*;
    import java.sql.*;
    import java.io.*;
    import com.hxtt.sql.*;
    public class backofficeDbfVerification {
    public backofficeDbfVerification(String path) throws SQLException {
    Properties prop = new Properties();
    prop.setProperty("user", "");
    prop.setProperty("OtherExtensions","true");
    prop.setProperty("Version Number", "03");
    try {
    Class.forName("com.hxtt.sql.dbf.DBFDriver").newInstance();
    connection = DriverManager.getConnection("jdbc:DBF:/"+path, prop);
    catch (ClassNotFoundException classnotfoundexception) {
    System.out.println("could ot find HXTT class, make sure the classpath have been defined in your system !");
    catch(Exception e) {
    System.out.println(e.getMessage());
    public void createBadRecord(String table, String newtable, int blth) throws SQLException {
    Statement stmt = connection.createStatement();
    String insert = "insert into \""+newtable+"\" select * from \""+table+"\"";
    boolean bInsert = stmt.execute(insert);
    stmt.close();
    public static void main (String args[]) {
         String path = "C:\\MASTER\\SOURCEDATA\\AREA";
    try {
    backofficeDbfVerification test = new backofficeDbfVerification(path);
    test.createBadRecord("source\\area\\123.AA2","source\\area\\others\\89964568.AA1");
    catch(SQLException sqx) {
    System.out.println("Error "+sqx.getMessage());
    i try to perform simple query : insert into tablea select from tableb which has same structure. the source table has only 9 rows, but the process ran very long time, no error message raised,it just run and never end (which make me upset for the whole day).
    i have tried another simple query : insert into table1 values (1,2) using the same driver and execute successfully.
    is it becoz of function limitation since i used evaluation copy ?

    Copy the answer from HXTT's support forum:
    No function limitation. I just tested:
    create table testa1 select * from test;
    insert into testa1 select * from test;
    Passed.
    I also run your backofficeDbfVerification.java sample. Passed too. I'm using the same code as you. The difference is only my 89964568.AA1 and 123.AA2 is simulative tables files. If possible, please zip your 89964568.AA1 and 123.AA2 and email to [email protected] Thanks.
    BTW, I pasted the little modified backofficeDbfVerification.java below:
    import java.sql.*;
    import java.util.*;
    public class backofficeDbfVerification {
    Connection connection;
    public backofficeDbfVerification(String path) throws SQLException {
    Properties prop = new Properties();
    prop.setProperty("user", "");
    prop.setProperty("OtherExtensions", "true");
    prop.setProperty("Version Number", "03");
    try {
    Class.forName("com.hxtt.sql.dbf.DBFDriver").newInstance();
    connection = DriverManager.getConnection("jdbc:DBF:/" + path, prop);
    catch (ClassNotFoundException classnotfoundexception) {
    System.out.println("could ot find HXTT class, make sure the classpath have been defined in your system !");
    catch (Exception e) {
    System.out.println(e.getMessage());
    public void createBadRecord(String table, String newtable) throws
    SQLException {
    Statement stmt = connection.createStatement();
    String insert = "insert into \"" + newtable + "\" select * from \"" +
    table + "\"";
    boolean bInsert = stmt.execute(insert);
    stmt.close();
    public static void main(String args[]) {
    String path = "f:\\dbffiles";
    try {
    backofficeDbfVerification test = new backofficeDbfVerification(path);
    test.createBadRecord("source\\area\\123.AA2",
    "source\\area\\others\\89964568.AA1");
    catch (SQLException sqx) {
    System.out.println("Error " + sqx.getMessage());
    }

  • How insert into table select from table works in jdbc driver?

    Hi, Supposing one table has two LOB fields, one LOB field is BLOB type while the other is CLOB type, I use the following sql statement to copy a row into a new row:
    insert into table (id, file_body, file_content) select new_id, file_body, file_content from table where id = '111';
    After commit on the connection, I can see the copied record in the table and both LOB fields are not null and this's the expected behavior.
    However after some days later, the copy function becomes to be a problem, the BLOB field named file_body can be null when the copy job is done, while other fields copy successfully.
    The issue can not be reproduced every time.
    I suppose the jdbc driver may try to allocate byte buffer in the heap to perform copy operation for BLOB fields,if there is no enough memory available in the heap the copy operation may fail but the commit on the connection can be successful.b/c I can see a lot of OOM errors in the log files and I believe this can contribute to the issue.
    Hope someone can give me a hint or comments.
    Thanks,
    SuoNayi

    I want to figure out what's memory leak point and I have tried the following solutions but none worked:
    1.I have tried to dump the memory of the JVM but failed,I can see the following errors :
    [root@localhost xxx]# jmap -heap:format=b 3027
    Attaching to process ID 3027, please wait...
    Debugger attached successfully.
    Server compiler detected.
    JVM version is 1.5.0_16-b02
    Unknown oop at 0x00002b21a24cd550
    Oop's klass is null
    Finding object size using Printezis bits and skipping over...
    Unknown oop at 0x00002b21a3634380
    Oop's klass is null
    Finding object size using Printezis bits and skipping over...
    2.and the thread stack can not be dumped successfully as well:
    Thread 3046: (state = BLOCKED)
    - java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
    Error occurred during stack walking:
    the version of java is:
    java version "1.5.0_16"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b02)
    Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_16-b02, mixed mode)
    I have to added dump thread stack option in JVM arguments, -XX:+HeapDumpOnOutOfMemoryError.
    If there are other solutions please let me know, thanks.

  • Duplicate insert into table

    hello all,
    i am having problem when insert data into table. my first value will insert into table once again and again when i refresh page or logged in as another person.
    is it because i am using JavaScript onChange on my page? here is my script..
    <html>
    <head>
    <title>Post New Offer</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script language="JavaScript" src="ts_picker.js"></script>
    </head>
    <body>
    <%@ page import ="java.sql.*" %>
    <%@ page import ="java.lang.*" %>
    <%@ page import ="java.util.*" %>
    <%@ page import ="java.io.*" %>
    <%@ page import ="java.text.SimpleDateFormat"%>
    <script language="JavaScript">
    function select_offer() {
    document.formoffer.submit();
    </script>
    <%!
    String username;
    String otype="";
    String submitform;
    String submitsave="";
    String bizid="";
    String contperson="";
    String ocategory="";
    String otitle="";
    String odesc="";
    String oposted="";
    String oexpiry="";
    String oprice;
    String ocheck="";
    String oqty;
    String ounit="";
    String oneeded="";
    String odelivery="";
    String opackaging="";
    String ostatus="";
    float price;
    int qty;
    int columns =0;
    int col =0;
    int vd =0;
    int columncate =0;
    int colcate =0;
    int rowcate =0;
    int vdcate=0;
    %>
    <jsp:useBean id="insertinto" class="ita.InsertNewOffer" scope="request" />
    <jsp:setProperty name="insertinto" property="*" />
    <% insertinto.connect();
    insertinto.setQueryInfo(username);
    col = insertinto.getColumn();
    Vector recordVector = insertinto.getVectorRow();
    insertinto.setQuery();
    colcate = insertinto.getColumn();
    rowcate = insertinto.getRow();
    Vector outVector = insertinto.getVectorRow();
    %>
    <!-- Header Menu -->
    <%@ include file="headermenu.jsp"%>
    <hr size="1">
    <br>
    <table width="100%" border="0">
    <tr>
    <td width="23%"><div align="right"><font size="2" face="Arial, Helvetica,
    sans-serif">Post by <b><% out.println(username); %></b></font></div>
    </td>
    </tr>
    </table>
    <!-- Left Menu -->
    <%@ include file="leftmenu.jsp"%>
    <%
    submitform = request.getParameter("submitform");
    if((submitform != null) && (submitform.equals("Post Offer")) && (!(otype.equals("none"))) && (!(bizid.equals(""))))
    ostatus = "posted";
    if((submitform != null) && (submitform.equals("Save Offer")) && (!(otype.equals("none"))) && (!(bizid.equals(""))))
    ostatus = "saved";
    bizid = request.getParameter("bizid"); if (bizid == null) { bizid = ""; }
    bizid = bizid.trim();
    otype = request.getParameter("otype"); if (otype == null) { otype = "none"; }
    ocategory = request.getParameter("ocategory"); if (ocategory == null) { ocategory = ""; }
    String cat="";
    String[] cat2 = request.getParameterValues("ocategory");
    if (cat2 != null)
    for(int i=0;i<cat2.length;i++) {
    cat += cat2[i] +";";
    //out.println("choose1 : "+cat2+"<br>");
    //out.println("choose2 : "+cat2[i]+"<br>");
    //out.println("choose3 : "+cat+"<br>");
    otitle = request.getParameter("otitle"); if (otitle == null) { otitle = ""; }
    odesc = request.getParameter("odesc"); if (odesc == null) { odesc = ""; }
    oposted = request.getParameter("oposted");
    oexpiry = request.getParameter("oexpiry");
    oexpiry = oexpiry.trim();
    oprice = request.getParameter("oprice");
    float price = 0;
    if (oprice != null) {
    try {
    price = Float.parseFloat(oprice);
    catch(NumberFormatException e) {}
    oqty = request.getParameter("oqty");
    int qty = 0;
    if (oqty != null) {
    try {
    qty = Integer.parseInt(oqty);
    catch(NumberFormatException e) {}
    ocheck = request.getParameter("ocheck"); if (ocheck == null) { ocheck = "no"; }
    ounit = request.getParameter("ounit"); if (ounit == null) { ounit = "none"; }
    oneeded = request.getParameter("oneeded"); if (oneeded == null) { oneeded = ""; }
    odelivery = request.getParameter("odelivery"); if (odelivery == null) { odelivery = ""; }
    opackaging = request.getParameter("opackaging"); if (opackaging == null) { opackaging = ""; }
    contperson = request.getParameter("contperson"); if (contperson == null) { contperson = ""; }
    contperson = contperson.trim();
    insertinto.InsertNew(bizid,otype,cat,otitle,odesc,oposted,oexpiry,price,ocheck,qty,ounit,oneeded,odelivery,opackaging,ostatus,contperson);
    insertinto.disconnect();
    %>
    <td width="77%">
    <form name="formoffer" method="post" action="NewOffer.jsp?username=<% out.println(username);%> ">
    <table width="100%" border="0" cellpadding="2">
    <tr>
    <td width="77%">
    <table width="100%" border="0">
    <tr>
    <td><font size="5" face="Arial, Helvetica, sans-serif">My Offer</font></td>
    </tr>
    <tr bgcolor="#FFCC00">
    <td colspan="3"><font color="#FFFFFF" size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <b>1) Offer Detail</b></font> </td>
    </tr>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Offer
    date :</font></td>
    <td width="61%" colspan="2"><font color="#336600" size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <%= new java.util.Date() %></font>
    <input type="hidden" name="oposted" value="<%= dateString %>"> </td>
    </tr>
    <tr>
    <td width="39%" valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Offer
    type :</font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <select name="otype" onChange="select_offer()">
         <%
         if (otype.equals("")||otype.equals("none")) { %>
    <option selected value="none">Select one</option>
    <option value="Buy">Buy</option>
         <option value="Sell">Sell</option>
         <option value="Biz Opportunity">Biz Op</option>
    <option value="Excess Stock">Excess Stock</option>
         <% }
    else if (otype.equals("Buy")) { %>
    <option value="none">Select one</option>
    <option selected value="Buy">Buy</option>
         <option value="Sell">Sell</option>
         <option value="Biz Opportunity">Biz Op</option>
    <option value="Excess Stock">Excess Stock</option>
         <% }
    else if (otype.equals("Sell")) { %>
    <option value="none">Select one</option>
    <option value="Buy">Buy</option>
         <option selected value="Sell">Sell</option>
         <option value="Biz Opportunity">Biz Op</option>
    <option value="Excess Stock">Excess Stock</option>
         <% }
    else if (otype.equals("Biz Opportunity")) { %>
    <option value="none">Select one</option>
    <option value="Buy">Buy</option>
         <option value="Sell">Sell</option>
         <option selected value="Biz Opportunity">Biz Op</option>
    <option value="Excess Stock">Excess Stock</option>
         <% }
    else if (otype.equals("Excess Stock")) { %>
    <option value="none">Select one</option>
    <option value="Buy">Buy</option>
         <option value="Sell">Sell</option>
         <option value="Biz Opportunity">Biz Op</option>
    <option selected value="Excess Stock">Excess Stock</option>
         <% } %>
    </select>
    </font> </td>
    </tr>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Category
    : </font></td>
    <td colspan="2">
    <% vdcate=0; %>
    <select name="ocategory" size="4" multiple>
    <% while (vdcate<outVector.size()) {
    for (int j=0; j<colcate; j++) {
    if (j==0) {
    String catid = (String)outVector.elementAt(vdcate) ;
    String mainlevel = (String)outVector.elementAt(vdcate+1) ;
    String level1 = (String)outVector.elementAt(vdcate+2) ;
    String level2 = (String)outVector.elementAt(vdcate+3) ;%>
    <option value=<% out.println(catid); %> >
    <% out.println(mainlevel); %>  - 
              <% out.println(level1); %>  - 
              <% out.println(level2); %>
    <% }
    if (j > 0) {}
    vdcate++;
    } %>
    </option>
    </select>
    </td>
    </tr>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Title
    :</font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <input name="otitle" type="text" size="35">
    </font> </td>
    </tr>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Offer
    description :</font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <textarea name="odesc" cols="30"></textarea>
    </font> </td>
    </tr>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Expiry date :</font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <input type="Text" name="oexpiry" readOnly style="BACKGROUND-COLOR: #eeeeee">
    <img src="img/cal.gif" width="16" height="16" border="0" alt="Click to select date">
    </font>
    </td>
    </tr>
    <%
    System.out.println("display form" +otype);
    if (otype.equals("Buy")) { %>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    Target price : </font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">RM
    <input name="oprice" type="text" size="7">
    <input type="checkbox" name="ocheck" value="yes">
    <font color="#FF0000">*<font color="#000000" size="1">Negotiable</font></font></font>
    </td>
    </tr>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Minimum
    quantity :</font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <input name="oqty" type="text" size="10">
    <select name="ounit" size="1">
    <option selected value="none">Choose one</option>
    <option>Kg</option>
    <option>Pack</option>
    <option>Ton</option>
    <option>Boxes</option>
    <option>Carton</option>
    </select>
    </font></td>
    </tr>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">When
    needed / Supply period :</font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <select name="oneeded">
    <option selected value="none">Select one</option>
    <option>Daily</option>
    <option>1 week</option>
    <option>2 weeks</option>
    <option>1 month</option>
    <option>2 months</option>
    <option>3 months</option>
    <option>6 months</option>
    </select>
    </font></td>
    </tr>
    <% } %>
    <%
    if (otype.equals("Sell")) { %>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Delivery
    : </font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <select name="odelivery" size="1">
    <option selected value="none">Choose one</option>
    <option>Own transport</option>
         </select>
    </font></td>
    </tr>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Packaging
    : </font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <select name="opackaging" size="1">
    <option selected value="none">Choose one</option>
    <option>Included</option>
    <option>Not included</option>
         </select>
    </font></td>
    </tr>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    Selling price : </font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">RM
    <input name="oprice" type="text" size="7">
    <input type="checkbox" name="ocheck" value="yes">
    <font color="#FF0000">*<font color="#000000" size="1">Negotiable</font></font></font>
    </td>
    </tr>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Available
    quantity :</font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <input name="oqty" type="text" size="10">
    <select name="ounit" size="1">
    <option selected value="none">Choose one</option>
    <option>Kg</option>
    <option>Pack</option>
    <option>Ton</option>
    <option>Boxes</option>
    <option>Carton</option>
    </select>
    </font></td>
    </tr>
    <% } %>
    <%
    if (otype.equals("Excess Stock")) { %>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Delivery
    : </font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <select name="odelivery" size="1">
    <option selected value="none">Choose one</option>
    <option>Own transport</option>
         </select>
    </font></td>
    </tr>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Packaging
    : </font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <select name="opackaging" size="1">
    <option selected value="none">Choose one</option>
    <option>Included</option>
    <option>Not included</option>
         </select>
    </font></td>
    </tr>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    Offer price : </font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">RM
    <input name="oprice" type="text" size="7">
    <input type="checkbox" name="ocheck" value="yes">
    <font color="#FF0000">*<font color="#000000" size="1">Negotiable</font></font></font>
    </td>
    </tr>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Available
    quantity :</font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <input name="oqty" type="text" size="10">
    <select name="ounit" size="1">
    <option selected value="none">Choose one</option>
    <option>Kg</option>
    <option>Pack</option>
    <option>Ton</option>
    <option>Boxes</option>
    <option>Carton</option>
    </select>
    </font></td>
    </tr>
    <% } %>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> </font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> </font></td>
    </tr>
    <% vd=0; %>
    <% for (int vd=0; vd<col; vd++) {  %>
    <tr bgcolor="#FFCC00">
    <td colspan="3" valign="top"><font color="#FFFFFF" size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>2)
    Contact Information</b></font></td>
    </tr>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Business
    ID : </font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <% String bizid = (String)recordVector.elementAt(vd); vd++; %>
    <% out.println(bizid); %></font>
    <input type="hidden" name="bizid" value="<% out.println(bizid); %>">
    </td>
    </tr>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Contact person : </font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <% String conttitle = (String)recordVector.elementAt(vd); vd++; %>
    <% String contperson = (String)recordVector.elementAt(vd); vd++; %>
    <% out.println(conttitle);
    out.println( contperson);%>
    <input type="hidden" name="contperson" value="<% out.println(contperson); %>"></font></td></tr>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Company name :</font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <% out.println(recordVector.elementAt(vd));vd++; %></font>
    </td>
    </tr>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Address
    : </font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
         <% out.println(recordVector.elementAt(vd));vd++; %>,
    <% out.println(recordVector.elementAt(vd));vd++; %>, 
    <% out.println(recordVector.elementAt(vd));vd++; %>
    <% out.println(recordVector.elementAt(vd));vd++; %></font></td>
    </tr>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Telephone
    : </font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
         <% out.println(recordVector.elementAt(vd));vd++; %></font></td>
    </tr>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Mobile phone
    : </font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
         <% out.println(recordVector.elementAt(vd));vd++; %></font></td>
    </tr>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Fax
    :</font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <% out.println(recordVector.elementAt(vd));vd++; %></td>
    </tr>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Email
    : </font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <a href ="mailto:<% out.println(username);%>@b2bxchange.com.my">
    <% out.println(username);%>@b2bxchange.com.my</a></font></td>
    </tr>
    <tr>
    <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Website
    : </font></td>
    <td colspan="2"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <% String website = (String)recordVector.elementAt(vd); vd++; %>
    <a href="<% out.println(website); %>"><% out.println(website); %></a></font></td>
    </tr>
    <tr>
    <td colspan="3"><font face="Arial, Helvetica, sans-serif"> </font></td>
    </tr>
    <tr>
    <td colspan="3"><div align="center"> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <input type="submit" name="submitform" value="Post Offer"> 
    <input type="submit" name="submitform" value="Save Offer"> 
    <input type="reset" name="resetform" value="Reset">
    </font></div></td>
    </tr>
    </table>
    </form>
    </td></tr>
    <% } %>
    <% vd=0; %>
    </table>
    </body>
    </html>

    I'm not going to try to read all your code, but I will take your hint about the "onChange".
    What I would suggest is that you set a boolean variable, such as "changed", set to false at the beginning (perhaps in the "onLoad" event). Your "onChange" event can simply change the "changed" variable to true. Then, when the user leaves the page, or clicks Submit or whatever, test that variable to see if any changes were made, then take the appropriate action.

  • How do i insert into table through forms

    Hi
    I have developed a custom form based on custom table.
    the only way to insert data into database table is through form.
    there are two tables: one table is to store all contract details & second table is to maintain history forthis.
    one condition(col1,col2,col3,col4) are unique combination,we are not creating any PK or FK at database level.evrythng is captured at form level.
    if all 4 columns combination exist thn e should not insert that record.
    if 4 columns combination doesnot exist then insert into table.
    I have used just pre insert,pre update triggers.
    I think its a basic form functionality ,by itself it inserts ,update record.now it is doing the same thng.
    But I have to add the above condition ,how can i do that.
    Pl provide me some ex code .
    Thank you.
    Hope any one can help me

    SQL> create table t
      2  (object_id    number
      3  ,object_name  varchar2(30));
    Table created.
    SQL>
    SQL> create sequence t_seq;
    Sequence created.
    SQL>
    SQL> insert into t (object_id, object_name)
      2  select t_seq.nextval
      3        ,object_name
      4  from   all_objects
      5  ;
    52637 rows created.

  • Reg: read excel column and insert into table.

    hi Friends,
          i wanted to read the data from Excel and insert into in my oracle tables.
          can you provide the link or example script.
        how to read the column value from excel and insert into table.
      please help.

    < unnecessary reference to personal blog removed by moderator >
    Here are the steps:
    1) First create a directory and grant read , write , execute to the user from where you want to access the flat files and load it.
    2) Write a generic function to load PIPE delimited flat files:
    CREATE OR REPLACE FUNCTION TABLE_LOAD ( p_table in varchar2,
    p_dir in varchar2 DEFAULT ‘YOUR_DIRECTORY_NAME’,
    P_FILENAME in varchar2,
    p_ignore_headerlines IN INTEGER DEFAULT 1,
    p_delimiter in varchar2 default ‘|’,
    p_optional_enclosed in varchar2 default ‘”‘ )
    return number
    is
    – FUNCTION TABLE_LOAD
    – PURPOSE: Load the flat files i.e. only text files to Oracle
    – tables.
    – This is a generic function which can be used for
    – importing any text flat files to oracle database.
    – PARAMETERS:
    – P_TABLE
    – Pass name of the table for which import has to be done.
    – P_DIR
    – Name of the directory where the file is been placed.
    – Note: The grant has to be given for the user to the directory
    – before executing the function
    – P_FILENAME
    – The name of the flat file(a text file)
    – P_IGNORE_HEADERLINES
    – By default we are passing 1 to skip the first line of the file
    – which are headers on the Flat files.
    – P_DELIMITER
    – Dafault “|” pipe is been passed.
    – P_OPTIONAL_ENCLOSED
    – Optionally enclosed by ‘ ” ‘ are been ignored.
    – AUTHOR:
    – Slobaray
    l_input utl_file.file_type;
    l_theCursor integer default dbms_sql.open_cursor;
    l_lastLine varchar2(4000);
    l_cnames varchar2(4000);
    l_bindvars varchar2(4000);
    l_status integer;
    l_cnt number default 0;
    l_rowCount number default 0;
    l_sep char(1) default NULL;
    L_ERRMSG varchar2(4000);
    V_EOF BOOLEAN := false;
    begin
    l_cnt := 1;
    for TAB_COLUMNS in (
    select column_name, data_type from user_tab_columns where table_name=p_table order by column_id
    ) loop
    l_cnames := l_cnames || tab_columns.column_name || ‘,’;
    l_bindvars := l_bindvars || case when tab_columns.data_type in (‘DATE’, ‘TIMESTAMP(6)’) then ‘to_date(:b’ || l_cnt || ‘,”YYYY-MM-DD HH24:MI:SS”),’ else ‘:b’|| l_cnt || ‘,’ end;
    l_cnt := l_cnt + 1;
    end loop;
    l_cnames := rtrim(l_cnames,’,');
    L_BINDVARS := RTRIM(L_BINDVARS,’,');
    L_INPUT := UTL_FILE.FOPEN( P_DIR, P_FILENAME, ‘r’ );
    IF p_ignore_headerlines > 0
    THEN
    BEGIN
    FOR i IN 1 .. p_ignore_headerlines
    LOOP
    UTL_FILE.get_line(l_input, l_lastLine);
    END LOOP;
    EXCEPTION
    WHEN NO_DATA_FOUND
    THEN
    v_eof := TRUE;
    end;
    END IF;
    if not v_eof then
    dbms_sql.parse( l_theCursor, ‘insert into ‘ || p_table || ‘(‘ || l_cnames || ‘) values (‘ || l_bindvars || ‘)’, dbms_sql.native );
    loop
    begin
    utl_file.get_line( l_input, l_lastLine );
    exception
    when NO_DATA_FOUND then
    exit;
    end;
    if length(l_lastLine) > 0 then
    for i in 1 .. l_cnt-1
    LOOP
    dbms_sql.bind_variable( l_theCursor, ‘:b’||i,
    ltrim(rtrim(rtrim(
    regexp_substr(l_lastLine,’([^|]*)(\||$)’,1,i),p_delimiter),p_optional_enclosed),p_optional_enclosed));
    end loop;
    begin
    l_status := dbms_sql.execute(l_theCursor);
    l_rowCount := l_rowCount + 1;
    exception
    when OTHERS then
    L_ERRMSG := SQLERRM;
    insert into BADLOG ( TABLE_NAME, ERRM, data, ERROR_DATE )
    values ( P_TABLE,l_errmsg, l_lastLine ,systimestamp );
    end;
    end if;
    end loop;
    dbms_sql.close_cursor(l_theCursor);
    utl_file.fclose( l_input );
    commit;
    end if;
    insert into IMPORT_HIST (FILENAME,TABLE_NAME,NUM_OF_REC,IMPORT_DATE)
    values ( P_FILENAME, P_TABLE,l_rowCount,sysdate );
    UTL_FILE.FRENAME(
    P_DIR,
    P_FILENAME,
    P_DIR,
    REPLACE(P_FILENAME,
    ‘.txt’,
    ‘_’ || TO_CHAR(SYSDATE, ‘DD_MON_RRRR_HH24_MI_SS_AM’) || ‘.txt’
    commit;
    RETURN L_ROWCOUNT;
    end TABLE_LOAD;
    Note: when you run the function then it will also modify the source flat file with timestamp , so that we can have the track like which file was loaded .
    3) Check if the user is having UTL_FILE privileges or not :
    SQL> SELECT OWNER,
    OBJECT_TYPE
    FROM ALL_OBJECTS
    WHERE OBJECT_NAME = ‘UTL_FILE’
    AND OWNER =<>;
    If the user is not having the privileges then grant “UTL_FILE” to user from SYS user:
    SQL> GRANT EXECUTE ON UTL_FILE TO <>;
    4) In the function I have used two tables like:
    import_hist table and badlog table to track the history of the load and another to check the bad log if it occurs while doing the load .
    Under the same user create an error log table to log the error out records while doing the import:
    SQL> CREATE TABLE badlog
    errm VARCHAR2(4000),
    data VARCHAR2(4000) ,
    error_date TIMESTAMP
    Under the same user create Load history table to log the details of the file and tables that are imported with a track of records loaded:
    SQL> create table IMPORT_HIST
    FILENAME varchar2(200),
    TABLE_NAME varchar2(200),
    NUM_OF_REC number,
    IMPORT_DATE DATE
    5) Finally run the PLSQL block and check if it is loading properly or not if not then check the badlog:
    Execute the PLSQL block to import the data from the USER:
    SQL> declare
    P_TABLE varchar2(200):=<>;
    P_DIR varchar2(200):=<>;
    P_FILENAME VARCHAR2(200):=<>;
    v_Return NUMBER;
    BEGIN
    v_Return := TABLE_LOAD(
    P_TABLE => P_TABLE,
    P_DIR => P_DIR,
    P_FILENAME => P_FILENAME,
    P_IGNORE_HEADERLINES => P_IGNORE_HEADERLINES,
    P_DELIMITER => P_DELIMITER,
    P_OPTIONAL_ENCLOSED => P_OPTIONAL_ENCLOSED
    DBMS_OUTPUT.PUT_LINE(‘v_Return = ‘ || v_Return);
    end;
    6) Once the PLSQL block is been executed then check for any error log table and also the target table if the records are been successfully imported or not.

  • Insert into table a (select * from table b) - need pk?

    Hi there.
    I'm going to insert into table FINAL (select * from table STAGING) - same structure but in STAGING the ID column has nulls.
    Do I need to provide the ID (primary key) for table FINAL or will it get created based on sequence/trigger?
    If I were doing this in a loop I'd get the next val from the sequence but on a simple insert, I'm curious.
    thanks!

    hmm.. what is ?
    it didn't like it.
    Error(11,4): PLS-00103: Encountered the symbol "[" when expecting one of the following:     begin case declare exit for goto if loop mod null pragma    raise return select update while with <an identifier>    <a double-quoted delimited-identifier> <a bind variable> <<    close current delete fetch lock insert open rollback    savepoint set sql execute commit forall merge    <a single-quoted SQL string> pipe
    9i, sqldeveloper                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Create Table... as Select * from.....  Vs Insert into table.....Select * from .....

    Hi All,
    I am having one query as below:
    There is a master table named: MSTR_TABLE  (It's having partitions on a month column [YYYYMM] )
    I am having 4 temp Tables As: Temp1, Temp2, temp3, Temp4 (These tables are not having any index, no partitions)
    Scenario 1: I am trying to insert data into MSTR_TABLE from Temp1, Temp2, temp3, Temp4 tables (Select data from temp tables by Outer Join), which i taking lot's of time. Coming to no of records in temp tables are Temp1: 5 Million Records,
                           Temp2: 3 Million Records,
                           Temp3: 0.5 Million records,
                           Temp4: 5000 Records
    Scenario 2: Creating a new Table as TEMP_MASTER using Temp1, Temp2, temp3, Temp4 tables. This is executing much faster and the table is getting created in less than 10 mins.
    Scenario 3: Now i am inserting data from TEMP_MASTER to MSTR_TABLE. This is is also getting executed in less than 5 mins.
    I tried following methods:
    1) Creating a table with partitions and tried Inserting Data - No Luck
    2) Disabled Logging on table and tried Inserting data - No Luck
    3) used /*+ append nologging*/ and tried inserting data - No Luck
    4) Altered Next Extent to 8MB and tried - No Luck
    Please let me know, why while inserting into main table (Scenario 1) from query is not working and running long time (More than 2 hrs).
    Thanks in Advance,
    Venu Gopal K

    Hi Sudhakar,
    Thanks for your reply. Please find the detailed description of situation as below:
    MSTR_TABLE: Existing Number of columns : 120
                            Indexes: NO
                            Partitions: On Month Column (Datatype: Number, format (YYYYMM, Ex: 201205))
                            Inserting Data for every month
    I added 18 new columns to MSTR_TABLE and the requirement is to populate data for 18 columns. These 18 columns data i am fetching from multiple tables and storing in temp tables as below, and creating a new table by joining PRNT_TABLE, TEMP1,TEMP2,TEMP3,TEMP4 and fetching 120+18 columns data and storing in MSTR_TABLE.
    PRNT_TABLE:  Existing Number of columns : 120
                            Indexes: NO
                            Partitions: On Month Column (Datatype: Number, format (YYYYMM, Ex: 201205))
                            Data : more than 100 Million records
    TEMP1: No Index, No Partitions (No Of Rows: 5 million)
    TEMP2: No Index, No Partitions  (No Of Rows: 4 million)
    TEMP3: No Index, No Partitions  (No Of Rows: 30000)
    TEMP4: No Index, No Partitions  (No Of Rows: 5000)
    Queries are as follows:
    Scenario 1:
    Insert into MSTR_TABLE
    (col1,
    col2,
    col3,
    col119,
    col120,
    New_col121,
    New_col122,
    New_col138)
    select col1, col2, col3 ...............col119, col120, New_col121, New_col122.................New_col138
    from PRNT_TABLE, TEMP1,TEMP2,TEMP3,TEMP4
    where PRNT_TABLE.Col1 = TEMP1.Col1(+)
       AND PRNT_TABLE.Col1 = TEMP1.Col1(+)
       AND PRNT_TABLE.Col1 = TEMP1.Col1(+)
      AND PRNT_TABLE.Col1 = TEMP1.Col1(+)
       AND  PRNT_TABLE.Month  = 201102
    Execution Plan Statistics: INSERT STATEMENT  ALL_ROWSCost: 19,451,465  Bytes: 2,472,327,442  Cardinality: 5,593,501 
    Scenario 1:
    Create table NEW_TABLE
    as
    select col1, col2, col3 ...............col119, col120, New_col121, New_col122.................New_col138
    from PRNT_TABLE, TEMP1,TEMP2,TEMP3,TEMP4
    where PRNT_TABLE.Col1 = TEMP1.Col1(+)
       AND PRNT_TABLE.Col1 = TEMP1.Col1(+)
       AND PRNT_TABLE.Col1 = TEMP1.Col1(+)
      AND PRNT_TABLE.Col1 = TEMP1.Col1(+)
       AND  PRNT_TABLE.Month  = 201102
    Execution Plan Statistics: CREATE TABLE STATEMENT  ALL_ROWSCost: 19,500,277  Bytes: 2,472,327,442  Cardinality: 5,593,501 
    Thanks,
    Venu Gopal K.

Maybe you are looking for

  • Comprssor won't start. Error message at startup is "Compressor quit unexpectedly"

    I have Compressor v4 and it won't start. Error message at every startup is "Compressor quit unexpectedly" See below I'm on a Mac Pro Running Lion 10.7.4 Processor 2 x 3 GHz Quad-Core Intel Xeon Ram 4 GB 800 MHz DDR2 FB-DIMM I also have the previous v

  • My iPod Classic 160GB has lost all its music and won't sync or restore

    My iPOD Classic 160GB has spontaneously lost all its music - approx. 5000 songs. One minute they were all there, now they're all gone - display says "No Music" although memory still shows 23GB in use? I tried to re-sync on iTunes but the iPod won't s

  • Need to add field to standard program.

    Hi all I need to add a field to standard program whic is from the Ztable.  How do I do it and where should i add the field.  Plz help. Regrds Mona

  • Run report in form 11g with RP2RRO.RP2RRO_RUN_PRODUCT

    I have installed Forms 11g R2 on Windows Server2008 64bit using tools are :- Weblogic Server 10.3.6 SE JDK 6U35 64bit Windows Server 2008 (Firewall off) Oracle Portal,Forms,Report, and Discoverer Services (11.1.1.4.0) I try to run report within form

  • PO via email to vendor

    Hi, We have done the required settings to transmit the PO to vendor via email. We now have a requirement where in the PO should be sent to multiple vendor email addresses. Pls suggest the solution for this. Thx