The following bug has been logged online:

Bug reference:      1347
Logged by:          Bahadur Singh

Email address:      [EMAIL PROTECTED]

PostgreSQL version: 8.0 Beta

Operating system:   Windows XP

Description:        Bulk Import  stopps after a while ( 8.0.0. RC1)

Details: 


Hello,

I have found a trivial problem during the bulk import of data. 
I have a following situation. 
  - I have 2 big table on SQL Server 2000 with 163000 rows each.

 - I have written a java program to transfer  data from SQL Server 2000 to 
PosgresSQL 8.0.0 RC1 release. I am updating the data in batches.  
If my batch size is 1000/2000 records at a time.. This works fine.. And if I 
change this size to say 20,000, it does only finishes one loop.. and then 
stays idle. The CPU usage down to 10 % which was before 100 % while applying 
the first batch of 20, 000 records. 


The execution of program is halting just at 
int n [] = stmt.batchUpdate();

I waited one hours at the most to wait above instruction to finish and then 
stopped manually.. I am not sure that is it JDBC error or PostgreSQL error. 
I am using JDBC release of PosgresSQL 8.0.0 RC1 release. 


Thanks
Bahadur


Include : 
Log 1 : when does not work..
Log 2 : when works ..

------------------ Log 1 ----------------

WHEN BATCH SIZE = 2000
---------------  

getMsSqlConnection() :: status =  ACTIVE
getPgSqlConnection() :: status =  ACTIVE
Fri Dec 10 16:47:23 CET 2004 Migration: CREATE TABLE EodIDC_S (
    "transstep" int,
    "transactionid" int,
    "departmentnumber" char (4),
    "plunumber" char (16),
    "identnumber" char (16),
    "quantity" int,
    "quantitydecimals" int,
    "packingunit" int,
    "mmcode" int,
    "amountsign" char (1),
    "amountabsolute" int,
    "code1" char (1),
    "code2" char (1),
    "code3" char (1),
    "idcdate" char (14),
    "originalitemprice" int,
 PRIMARY KEY ( TransactionId,TransStep ) )
Fri Dec 10 16:47:23 CET 2004 Migration: CREATE TABLE EodIDC_S FINISHED
Fri Dec 10 16:47:23 CET 2004 Migration: CREATE TABLE EodIDC_W (
    "transactionid" int,
    "transstep" int,
    "iteminfo" char (4),
    "itemnumber" char (16),
    "flag1" char (2),
    "flag2" char (2),
    "amount" int,
    "flag3" char (2),
    "code1" char (1),
    "flag4" char (2),
    "code2" char (1),
    "code3" char (1),
    "idcdate" char (14),
    "plunumber" char (16),
    "quantity" int,
 PRIMARY KEY ( TransactionId,TransStep ) )
Fri Dec 10 16:47:23 CET 2004 Migration: CREATE TABLE EodIDC_W FINISHED
Fri Dec 10 16:47:23 CET 2004 Migration: DDL finished in 109 ms
Fri Dec 10 16:47:23 CET 2004 Migration: Exporting Table to PostgreSQL = 
EodIDC_S 
Fri Dec 10 16:47:23 CET 2004 Migration: Reading data from MS SQL Server 
table ... EodIDC_S 
Fri Dec 10 16:47:24 CET 2004 Migration: Batch sent upto  = 20000
Fri Dec 10 16:47:24 CET 2004 Migration: EodIDC_S Total SQLs sent to DB=20000
Fri Dec 10 16:47:31 CET 2004 Migration: EodIDC_S Records updated in DB=20000
Fri Dec 10 16:47:32 CET 2004 Migration: Batch sent upto  = 40000
Fri Dec 10 16:47:32 CET 2004 Migration: EodIDC_S Total SQLs sent to DB=20000

****** NO RESPONSE AFTER ******
Process stopped and restarted with batch size 2000 rows



------------------ Log 2 ----------------
WHEN BATCH SIZE = 2000
---------------------- 


Fri Dec 10 16:51:02 CET 2004 Migration: CREATE TABLE EodIDC_S (
    "transstep" int,
    "transactionid" int,
    "departmentnumber" char (4),
    "plunumber" char (16),
    "identnumber" char (16),
    "quantity" int,
    "quantitydecimals" int,
    "packingunit" int,
    "mmcode" int,
    "amountsign" char (1),
    "amountabsolute" int,
    "code1" char (1),
    "code2" char (1),
    "code3" char (1),
    "idcdate" char (14),
    "originalitemprice" int,
 PRIMARY KEY ( TransactionId,TransStep ) )
Fri Dec 10 16:51:02 CET 2004 Migration: CREATE TABLE EodIDC_S FINISHED 
Fri Dec 10 16:51:02 CET 2004 Migration: CREATE TABLE EodIDC_W (
    "transactionid" int,
    "transstep" int,
    "iteminfo" char (4),
    "itemnumber" char (16),
    "flag1" char (2),
    "flag2" char (2),
    "amount" int,
    "flag3" char (2),
    "code1" char (1),
    "flag4" char (2),
    "code2" char (1),
    "code3" char (1),
    "idcdate" char (14),
    "plunumber" char (16),
    "quantity" int,
 PRIMARY KEY ( TransactionId,TransStep ) )
Fri Dec 10 16:51:02 CET 2004 Migration: CREATE TABLE EodIDC_W FINISHED 
Fri Dec 10 16:51:02 CET 2004 Migration: DDL finished in 94 ms 
Fri Dec 10 16:51:02 CET 2004 Migration: Exporting Table to PostgreSQL = 
EodIDC_S 
Fri Dec 10 16:51:02 CET 2004 Migration: Reading data from MS SQL Server 
table ... EodIDC_S 
Fri Dec 10 16:51:03 CET 2004 Migration: Batch sent upto  = 2000
Fri Dec 10 16:51:03 CET 2004 Migration: EodIDC_S Total SQLs sent to DB=2000
Fri Dec 10 16:51:03 CET 2004 Migration: EodIDC_S Records updated in DB=2000
Fri Dec 10 16:51:03 CET 2004 Migration: Batch sent upto  = 4000
Fri Dec 10 16:51:03 CET 2004 Migration: EodIDC_S Total SQLs sent to DB=2000
Fri Dec 10 16:51:04 CET 2004 Migration: EodIDC_S Records updated in DB=2000
Fri Dec 10 16:51:04 CET 2004 Migration: Batch sent upto  = 6000
Fri Dec 10 16:51:04 CET 2004 Migration: EodIDC_S Total SQLs sent to DB=2000
Fri Dec 10 16:51:05 CET 2004 Migration: EodIDC_S Records updated in DB=2000
Fri Dec 10 16:51:05 CET 2004 Migration: Batch sent upto  = 8000

..
..

..

..

Fri Dec 10 16:52:07 CET 2004 Migration: EodIDC_S Records updated in DB=2000
Fri Dec 10 16:52:07 CET 2004 Migration: Batch sent upto  = 162000
Fri Dec 10 16:52:07 CET 2004 Migration: EodIDC_S Total SQLs sent to DB=2000
Fri Dec 10 16:52:08 CET 2004 Migration: EodIDC_S Records updated in DB=2000
Fri Dec 10 16:52:08 CET 2004 Migration: Complete Batch sent = 163492
Fri Dec 10 16:52:08 CET 2004 Migration: Total SQL=1492
Fri Dec 10 16:52:08 CET 2004 Migration: Records updated 1492
Fri Dec 10 16:52:08 CET 2004 Migration: Exporting Table to PostgreSQL = 
EodIDC_S DONE  



**** THE DATA WAS IMPORTED SUCCESSFULLY *****



************ JAVA METHOD ***************

        private void insertBulkData (ArrayList insertSqlList, String tableName, 
boolean save ) throws Exception { 
                // update 
                
                try {
                        Connection con = getPgSqlConnection();
                        con.setAutoCommit(false);
                        Statement stmt = con.createStatement();
                        
                        for (Iterator sqls = insertSqlList.iterator(); 
sqls.hasNext(); ) {
                                String sql = (String)sqls.next();
                                stmt.addBatch(sql);
                        }
                        log( tableName + " Total SQLs sent to DB=" + 
insertSqlList.size());
                        int n [] = stmt.executeBatch();
                        stmt.close();
                        log( tableName + " Records updated in DB="  + n.length 
);
                        if (save) {
                                con.commit();
                        }
                } catch (SQLException e) {
                        e.printStackTrace();
                        throw e;
                } catch (Throwable te) {
                        te.printStackTrace();
                }
        
        }






---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend

Reply via email to