Sybase JConnect:使用ENABLE_BULK_LOAD

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

我搜寻了互联网,却一无所获。

回答:

我与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

}

以上是 Sybase JConnect:使用ENABLE_BULK_LOAD 的全部内容, 来源链接: utcz.com/qa/403629.html

回到顶部