如何提升 netezza 插入语句过程
Posted
技术标签:
【中文标题】如何提升 netezza 插入语句过程【英文标题】:How to boost up netezza insert statement process 【发布时间】:2015-07-15 22:15:43 【问题描述】:我正在将数据从 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();
【问题讨论】:
提示 1:谷歌搜索“netezza 批量加载”。提示 2:考虑将 insert 语句更改为一次插入一批行。 我正在使用外部 csv 文件将数据推送到 netezza。我在 netezza 中的表有 6 列。第一列必须保持为空,并且 CSV 文件中的数据必须填写扩孔列,但我的所有数据都存储在每一行的第一列中。这些是我的列名: 'TABLE_NAME','COLUMN_NAME','SYSTEM_ID','PLATFORM' "INSERT INTO DATABASE_TABLE_INFO SELECT * FROM EXTERNAL 'table_info.csv' USING (delimiter ','REMOTESOURCE 'jdbc' LOGDIR 'C:\\ temp'skirows 1 maxerrors 0 fillrecord)";有什么建议吗? 【参考方案1】:建议:
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)
【讨论】:
以上是关于如何提升 netezza 插入语句过程的主要内容,如果未能解决你的问题,请参考以下文章