如何提高 netezza 插入语句过程
How to boost up netezza insert statement process
我正在将数据从 Oracle
复制到 Netezza
。我有几千行,使用一次插入一行将所有这些数据输出到 netezza 中花费的时间太长了。我怎么能提高这个?
copyToChidDatabaseColumnInfo(rs.getString("OWNER"), rs.getString("TABLE_NAME"), rs.getString("COLUMN_NAME"));
// this is what it is within the copyToChidDatabaseColumnInfo method:
PreparedStatement pstmt = ChildConnection.prepareStatement("INSERT INTO DATABASE_COLUMN_INFO (OWNER_NAME, TABLE_NAME, COLUMN_NAME, SYSTEM_ID, PLATFORM) VALUES (?,?,?,?,?)");
pstmt.setString(1,owner);
pstmt.setString(2,tbname);
pstmt.setString(3,columnname);
pstmt.setString(4,parentSYSTEM_ID);
pstmt.setString(5,parentPlatform);
pstmt.execute();
pstmt.close();
建议:
INSERT INTO DATABASE_COLUMN_INFO (nullcolumn, OWNER_NAME, TABLE_NAME, COLUMN_NAME, SYSTEM_ID, PLATFORM)
SELECT null, OWNER_NAME, TABLE_NAME, COLUMN_NAME, SYSTEM_ID, PLATFORM
FROM EXTERNAL 'table_info.csv'
(
OWNER_NAME varchar(500)
,TABLE_NAME varchar(500)
, COLUMN_NAME varchar(500)
, SYSTEM_ID varchar(500)
, PLATFORM varchar(500)
)
USING (delimiter ',' REMOTESOURCE 'jdbc' LOGDIR 'C:\temp' skiprows 1 maxerrors 0 fillrecord true)
我正在将数据从 Oracle
复制到 Netezza
。我有几千行,使用一次插入一行将所有这些数据输出到 netezza 中花费的时间太长了。我怎么能提高这个?
copyToChidDatabaseColumnInfo(rs.getString("OWNER"), rs.getString("TABLE_NAME"), rs.getString("COLUMN_NAME"));
// this is what it is within the copyToChidDatabaseColumnInfo method:
PreparedStatement pstmt = ChildConnection.prepareStatement("INSERT INTO DATABASE_COLUMN_INFO (OWNER_NAME, TABLE_NAME, COLUMN_NAME, SYSTEM_ID, PLATFORM) VALUES (?,?,?,?,?)");
pstmt.setString(1,owner);
pstmt.setString(2,tbname);
pstmt.setString(3,columnname);
pstmt.setString(4,parentSYSTEM_ID);
pstmt.setString(5,parentPlatform);
pstmt.execute();
pstmt.close();
建议:
INSERT INTO DATABASE_COLUMN_INFO (nullcolumn, OWNER_NAME, TABLE_NAME, COLUMN_NAME, SYSTEM_ID, PLATFORM)
SELECT null, OWNER_NAME, TABLE_NAME, COLUMN_NAME, SYSTEM_ID, PLATFORM
FROM EXTERNAL 'table_info.csv'
(
OWNER_NAME varchar(500)
,TABLE_NAME varchar(500)
, COLUMN_NAME varchar(500)
, SYSTEM_ID varchar(500)
, PLATFORM varchar(500)
)
USING (delimiter ',' REMOTESOURCE 'jdbc' LOGDIR 'C:\temp' skiprows 1 maxerrors 0 fillrecord true)