Sybase JConnect:ENABLE_BULK_LOAD用法

Chr*_*non 3 java bulkinsert bulk sybase-ase

那里的任何人都可以通过JConnect(带ENABLE_BULK_LOAD)向Sybase ASE 提供批量插入的示例吗?

我在互联网上搜索,一无所获.

Chr*_*non 9

我与Sybase的一位工程师取得了联系,他们为我提供了代码示例.所以,我得回答我自己的问题.

基本上这里是一个纲要,因为代码示例非常大......这假定了很多预先初始化的变量,但是否则它将是几百行.有兴趣的人应该明白这个想法.在一个完美的世界中,这可以每秒产生高达22K的插入次数(根据Sybase无论如何).

SybDriver sybDriver = (SybDriver) Class.forName("com.sybase.jdbc3.jdbc.SybDriver").newInstance();
sybDriver.setVersion(com.sybase.jdbcx.SybDriver.VERSION_6);
DriverManager.registerDriver(sybDriver);

//DBProps (after including normal login/password etc.
props.put("ENABLE_BULK_LOAD","true");

//open connection here for  sybDriver

dbConn.setAutoCommit(false);    
String SQLString = "insert into batch_inserts (row_id, colname1, colname2)\n values (?,?,?) \n";

PreparedStatement   pstmt;
try
{
   pstmt = dbConn.prepareStatement(SQLString);      
}
catch (SQLException sqle)
{
   displaySQLEx("Couldn't prepare statement",sqle);
   return;
}

for (String[] val : valuesToInsert)
{
   pstmt.setString(1, val[0]);  //row_id    varchar(30)
   pstmt.setString(2, val[1]);//logical_server varchar(30)
   pstmt.setString(3, val[2]);  //client_host varchar(30)

   try
   {
      pstmt.addBatch();
   }
   catch (SQLException sqle)
   {
      displaySQLEx("Failed to build batch",sqle);
      break;
   }
}

try {
   pstmt.executeBatch();
   dbConn.commit();
   pstmt.close();
} catch (SQLException sqle) {
   //handle
}

try {
   if (dbConn != null)
      dbConn.close();
} catch (Exception e) {
   //handle
}
Run Code Online (Sandbox Code Playgroud)