生成insert指令碼的指令碼
1.透過sql/儲存過程
2.透過java程式
0.sql
-- created by yangtingkun
select 'insert into yourtable values (' || col_num || ', ''' || col_char || ''', to_date(' || to_char(col_date, 'yyyy-mm-dd hh24:mi:ss' ||, '''yyyy-mm-dd hh24:mi:ss'');' from yourtable;
1.透過儲存過程生成insert指令碼
drop table t_data
/
create table t_data
as
select object_id from dba_objects
where rownum < 100
/
set serveroutput on
declare
begin
dbms_output.enable(100000);
for c_1 in (select * from t_data where rownum < 5) loop
dbms_output.put_line('insert into t_data values');
dbms_output.put_line('('||c_1.object_id||');');
end loop;
end;
/
2.使用java
/**
* 根據輸入的sql生成insert指令碼 created by husthxd 2005-03-03 v0.1
* @param conn
* @param sqlstmt
* @param uri 輸出的檔名稱
* @return
* @throws GFPortalException
*/
public boolean createSqlFile(Connection conn, String sqlstmt, String tablename,String uri) throws GFPortalException {
//執行語句
PreparedStatement pstmt;
ResultSet rs = null;
//連線
try {
//獲取sql語句
pstmt =
conn.prepareStatement(sqlstmt,
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
} catch (Exception e) {
logger.debug("查詢初始化失敗!" + e);
throw new GFPortalException("查詢初始化失敗!" + e);
}
//獲取結果集
try {
rs = pstmt.executeQuery(); //結果集
ResultSetMetaData rsmd = rs.getMetaData(); //後設資料
PrintWriter out = new PrintWriter(new FileWriter(uri), true);
while (rs.next()) {
StringBuffer row = new StringBuffer();
row.append("insert into " + tablename + " values(");
int count = rsmd.getColumnCount();
//獲取其中的一條記錄
for (int i = 1; i <= count; i++) {
//放入到檔案中
if (!CommonUtility.isNull(rs.getObject(i)))//判斷是否為null
{
switch (rsmd.getColumnType(i)) {
case Types.BIT:
case Types.INTEGER:
case Types.TINYINT:
case Types.BIGINT:
case Types.REAL:
case Types.FLOAT:
case Types.DOUBLE:
case Types.NUMERIC:
case Types.DECIMAL:
case Types.LONGVARBINARY:
case Types.VARBINARY:
case Types.BINARY:
row.append(rs.getObject(i));
break;
case Types.BLOB:
case Types.CLOB:
break;
case Types.DATE:
case Types.TIME:
case Types.TIMESTAMP:
case Types.NULL:
row.append("to_date('");
row.append(CommonUtility.getYMDHMM(rs.getDate(i)));
row.append("'");
row.append(",'yyyy-mm-dd hh24:mi:ss')");
break;
case Types.LONGVARCHAR:
case Types.CHAR:
case Types.VARCHAR:
case Types.OTHER:
default:
row.append("'");
row.append(rs.getString(i));
row.append("'");
break;
}//end switch
} else {
row.append("''");
}
if (i == count)//判斷是否最後一列
{
row.append(");");
} else {
row.append(",");
}
}
//完成一行
out.println(row.toString());
//釋放資源
row = null;
}
} catch (Exception e) {
logger.debug("查詢出錯!" + e);
throw new GFPortalException("查詢出錯!" + e.getMessage());
} finally {
try {
ConnMgr.closePreparedStatement(pstmt);
rs.close();
pstmt.close();
} catch (Exception e2) {
}
}
return true;
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6906/viewspace-21715/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- redolog生成指令碼指令碼
- sqoop指令碼批量生成OOP指令碼
- [20190107]生成bbed執行指令碼:指令碼
- [20231021]生成bbed的執行指令碼.txt指令碼
- Jmeter 本身能錄製指令碼,為什麼還要用 Fiddler 生成指令碼?JMeter指令碼
- 案例四:Shell指令碼生成隨機密碼指令碼隨機密碼
- IDEA 利用groovy指令碼生成註釋Idea指令碼
- Oracle批次生成Merge指令碼程式Oracle指令碼
- mssql生成資料庫字典指令碼-MarkDownSQL資料庫指令碼
- awr報告每天自動生成指令碼指令碼
- SQL Server映象自動生成指令碼方法SQLServer指令碼
- 【AWR】Oracle批量生成awr報告指令碼Oracle指令碼
- [20231023]生成bbed的執行指令碼(bash shell).txt指令碼
- 一個能夠生成 Markdown 表格的 Bash 指令碼指令碼
- LightDB/PostgreSQL 生成可重複執行的指令碼SQL指令碼
- iOS逆向 Shell指令碼+指令碼重簽名iOS指令碼
- 常用指令碼學習手冊——Bat指令碼指令碼BAT
- Bash指令碼指令碼
- powershell指令碼指令碼
- jpsall指令碼指令碼
- perl指令碼指令碼
- shell指令碼指令碼
- MySQL指令碼MySql指令碼
- java 指令碼Java指令碼
- JMeter指令碼JMeter指令碼
- swift指令碼程式設計:一鍵生成AppIconSwift指令碼程式設計APP
- PowerDesigner: 利用sql指令碼檔案逆生成模型SQL指令碼模型
- 第22篇 生成proto檔案bat指令碼BAT指令碼
- iOS使用指令碼跟隨工程程式碼動態生成FrameworkiOS指令碼Framework
- 手寫指令碼程式碼太累!搞一個生成工具吧指令碼
- hadoop_批量命令指令碼&同步檔案指令碼Hadoop指令碼
- Mac生成APP圖示和啟動圖的指令碼MacAPP指令碼
- 生成 Linux 執行時間報告的 Bash 指令碼Linux指令碼
- 程式碼上線的shell指令碼指令碼
- 用bat指令碼自動生成安裝包InnosetupBAT指令碼
- 初學指令碼指令碼
- python 常用指令碼Python指令碼
- Redis - Lua 指令碼Redis指令碼
- Linux指令碼分享Linux指令碼