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