我需要在java中创建一个平面文件。在这个平面文件中,我编写了insert语句,其中数据来自oracle表。 以下是我的java代码
stmtSQL="SELECT * FROM Table1";
resultSQL=null;
resultSQL=myCreateStmt.executeQuery(stmtSQL);
strSQLIns="";
while(resultSQL.next())
{
strSQLIns=strSQLIns+"INSERT INTO Table1 VALUES ('";
for(int iLoopCtr=0;iLoopCtr<27;iLoopCtr++)
{
if(iLoopCtr==26)
strSQLIns=strSQLIns+resultSQL.getString(iLoopCtr+1)+"'";
else
strSQLIns=strSQLIns+resultSQL.getString(iLoopCtr+1)+"','";
}
strSQLIns=strSQLIns+");\n";
}
当我运行此代码系统时,会生成类似这样的插入语句
INSERT INTO Table1 VALUES ('80896948 ','gMWcjDMPXox4LVyrXGw0Ok+4SQI=');
INSERT INTO Table1 VALUES ('39454249 ','z+5fkcA+7wrZrF2455kngiTdYU4=');
INSERT INTO Table1 VALUES ('52167960 ','+N55nru+ewwhKPJygW99T8yEQXg=');
现在我不想使用while循环,所以代码生成上面的insert语句。我想要一些快速的方法,所以我生成这样格式化的SQL查询。
INSERT INTO Table1 (c1,c2) (SELECT '1', 'first row' FROM dual UNION SELECT '2', 'second row' FROM dual);
答案 0 :(得分:0)
如果您处于生产环境中:最快捷的方式就是使用Oracle提供的导入/导出工具
http://docs.oracle.com/cd/B10501_01/server.920/a96652/ch01.htm
如果您有学业问题或为此而这样做:
您的计划是一个很好的开始。我会阅读ResultSetMetadata
,所以你可以从你的代码中删除那个神奇的'26'。只需将它存储在List<String[]>
中,然后通过迭代该列表来构建INSERT-SELECT命令。请注意该示例过于简化,您将遇到一些问题: