解析增量xml資料到資料庫
作者:Vashon
時間:20160323
昨天接到領導安排的任務:將系統產生的增量xml資料插入到另一個專案中的資料庫中(資料庫表結構一樣)。
網上查找了許多例子,都是沒有考慮到資料型別或其他的細節,如果改變資料庫表則再需要修改程式,這顯得很麻煩。以下是本人花了不少時間,利用工廠及代理模式設計出來的一個工具,使用者可以使用過程修改配置檔案即可。
功能描述:
1、定時讀取指定路徑的下的檔案到資料庫,並在插入前做資料的唯一性處理。
2、自動匹配對應資料庫表結構的增量xml資料檔案。
3、將讀取完成的xml檔案移動到bak目錄。
4、控制日誌輸出級別。
增量xml例子
增量xml資料格式(該xml樣例只包含兩條目標插入資料,實際檔案中是包含很多條的。)如下:
<?xml version="1.0" encoding="utf-8"?> <project> <corporation_info> <corp_info_id>20100816215830297313</corp_info_id> <organ_code>765955335</organ_code> <entity_id>270000032004080500176</entity_id> <corp_name>上海煌虹建築裝飾設計工程有限公司</corp_name> <corp_type>00010100</corp_type> <person_name>黃XXXX</person_name> <address>上海市松江區泖港鎮中南路7號B區186號</address> <area_code>松江</area_code> <zip>201607</zip> <telephone>62418078</telephone> <establish_date>2004-08-05T00:00:00</establish_date> <reg_capital>600</reg_capital> <currency>人民幣</currency> <business_scope>建築裝飾裝修工程與設計</business_scope> <person_cert_type></person_cert_type> <person_cert_code></person_cert_code> <industry_code>E5010</industry_code> <organizers></organizers> <funding_src></funding_src> <reg_no>310227001057592</reg_no> <receiving_organ>270000</receiving_organ> <repeal_reason></repeal_reason> <repeal_date></repeal_date> <change_date>2016-03-16T13:33:00</change_date> <change_item></change_item> <repeal_organ></repeal_organ> <branch_num></branch_num> <represent_num></represent_num> <reg_upd_date></reg_upd_date> <taxpayers_code>310227765955335</taxpayers_code> <tax_code>13102275103</tax_code> <tax_reg_date>2004-08-13</tax_reg_date> <tax_chge_content>納稅人名稱,財務負責人姓名XXXXX</tax_chge_content> <tax_chge_date>2015-01-22</tax_chge_date> <tax_repeal_reason></tax_repeal_reason> <tax_repeal_date></tax_repeal_date> <tax_repeal_organ ></tax_repeal_organ > <business_address>上海市長寧區玉屏南路520弄15號</business_address> <tax_upd_date></tax_upd_date> <organcode_date></organcode_date> <orgcode_chgdate>2010-03-12</orgcode_chgdate> <orgcode_repealdate></orgcode_repealdate> <qs_upd_date></qs_upd_date> <uni_sc_id>913101177659553356</uni_sc_id> </corporation_info> <corporation_info> <corp_info_id>20100816215830455984</corp_info_id> <organ_code>557439256</organ_code> <entity_id>270000032010062100052</entity_id> <corp_name>上海翔晟包裝材料有限公司</corp_name> <corp_type>00010100</corp_type> <person_name>張XX</person_name> <address>上海市松江區泖港鎮鬆金公路8238號2幢</address> <area_code>松江</area_code> <zip>201607</zip> <telephone>15000428729</telephone> <establish_date>2010-06-21T00:00:00</establish_date> <reg_capital>100</reg_capital> <currency>人民幣</currency> <business_scope>包裝材料、泡沫製品批發零售;塑料製品加工及銷售</business_scope> <person_cert_type></person_cert_type> <person_cert_code></person_cert_code> <industry_code>F5141</industry_code> <organizers></organizers> <funding_src></funding_src> <reg_no>310227001548657</reg_no> <receiving_organ>270000</receiving_organ> <repeal_reason></repeal_reason> <repeal_date></repeal_date> <change_date>2016-03-16T13:30:00</change_date> <change_item></change_item> <repeal_organ></repeal_organ> <branch_num></branch_num> <represent_num></represent_num> <reg_upd_date></reg_upd_date> <taxpayers_code>310227557439256</taxpayers_code> <tax_code>13102275100</tax_code> <tax_reg_date></tax_reg_date> <tax_chge_content>註冊地址,生產經營地址,經營範圍</tax_chge_content> <tax_chge_date>2014-03-24</tax_chge_date> <tax_repeal_reason></tax_repeal_reason> <tax_repeal_date></tax_repeal_date> <tax_repeal_organ ></tax_repeal_organ > <business_address>上海市松江區泖港鎮鬆金公路7836號</business_address> <tax_upd_date></tax_upd_date> <organcode_date>2010-06-22</organcode_date> <orgcode_chgdate></orgcode_chgdate> <orgcode_repealdate></orgcode_repealdate> <qs_upd_date></qs_upd_date> <uni_sc_id>91310117557439256R</uni_sc_id> </corporation_info> </project>
增量xml分析
以上作為xml檔案的例子,在根節點<project>下面有多個子節點<corporation_info>,該子節點是資料庫表名稱。<corporation_info>下面的子節點是表的欄位和對應的欄位內容。
現在需要將這些增量資料插入到另一系統對應的資料庫中(資料庫表結構一樣)。
分析:先獲取資料庫表結構,遍歷表中的欄位名稱及欄位型別,根據條件分別對他們進行處理以及根據屬性名稱在xml檔案中檢索。
實現程式碼
經過分析實現以及程式碼優化,最終形成一個工具類,程式碼如下:
DBC連線池
public class ConnectionPool {
private Vector<Connection> pool;
private String url;
private String username;
private String password;
private String driverClassName;
/**
* 連線池的大小,也就是連線池中有多少個數據庫連線。
*/
private int poolSize = 1;
private static ConnectionPool instance = null;
/**
* 讀取設定連線池的屬性檔案
*/
private void readConfig() {
try {
this.driverClassName = PropertyUtils.getProperty("jdbc.driverClassName");
this.url = PropertyUtils.getProperty("jdbc.url");
this.username = PropertyUtils.getProperty("jdbc.user");
this.password = PropertyUtils.getProperty("jdbc.password");
this.poolSize = 50;
} catch (Exception e) {
e.printStackTrace();
System.err.println("讀取屬性檔案出錯.");
}
}
private ConnectionPool() {
init();
}
private void init() {
pool = new Vector<Connection>(poolSize);
readConfig();
addConnection();
}
public synchronized void release(Connection conn) {
pool.add(conn);
}
public synchronized void closePool() {
for (int i = 0; i < pool.size(); i++) {
try {
((Connection) pool.get(i)).close();
} catch (SQLException e) {
e.printStackTrace();
}
pool.remove(i);
}
}
public static ConnectionPool getInstance() {
if (instance == null) {
instance = new ConnectionPool();
}
return instance;
}
public synchronized Connection getConnection() {
if (pool.size() > 0) {
Connection conn = pool.get(0);
pool.remove(conn);
return conn;
} else {
return null;
}
}
private void addConnection() {
Connection conn = null;
for (int i = 0; i < poolSize; i++) {
try {
Class.forName(driverClassName);
conn = java.sql.DriverManager.getConnection(url, username, password);
pool.add(conn);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
operator
工廠類:
public class Factory {
public static IReadXml getIOperateInstance(){
return new ReadXmlProxy();
}
}
介面類:
public interface IReadXml{
/**獲取xml根節點**/
public Element getXmlRoot();
/**獲取xml根節點**/
public Element getXmlRoot(File file);
/**迴圈讀取xml資料到資料庫**/
public void readXml(Element root);
/**遍歷並讀取指定目錄下的xml檔案**/
public void readXmlsByPath(String path);
}
代理類:
public class ReadXmlProxy implements IReadXml {
private ConnectionPool dbc = null;
private IReadXml readxml = null;
public ReadXmlProxy() {
this.dbc = ConnectionPool.getInstance();// 資料庫連線操作
this.readxml = new ReadXmlImpl(this.dbc.getConnection());
}
public Element getXmlRoot() {
return this.readxml.getXmlRoot();
}
public void readXml(Element root) {
try {
this.readxml.readXml(root);
} catch (Exception e) {
e.printStackTrace();
} finally {
this.dbc.closePool();
}
}
@Override
public void readXmlsByPath(String path) {
this.readxml.readXmlsByPath(path);
}
@Override
public Element getXmlRoot(File file) {
return this.readxml.getXmlRoot(file);
}
}
實現類:
public class ReadXmlImpl implements IReadXml{
private Logger logger = Logger.getLogger(ReadXmlImpl.class);
private Connection conn=null;
/**型別為NUBMBER或DATE**/
public static final String IS_NUMBER_OR_DATE = "1";
/**是否開啟寫入資料庫操作標記(1:開啟,0:關閉)**/
public static final String POWER_ON = "1";
/**列印插入資料日誌級別**/
public static final String LOG_LEVEL = PropertyUtils.getProperty("log.level");
/**日誌資訊一級輸出**/
public static final String LOG_DEBUG = "debug";
/**日誌資訊二級輸出**/
public static final String LOG_INFO = "info";
/**日誌資訊三級輸出**/
public static final String LOG_WARN = "warn";
/**日誌級別控制,預設為不輸出.**/
private int logLevel = 0;
/**記錄資料插入量**/
int count = 0;
public ReadXmlImpl(Connection conn) {
this.conn=conn;
if(LOG_DEBUG.equals(LOG_LEVEL)){
logLevel = 3;
}
if(LOG_INFO.equals(LOG_LEVEL)){
logLevel = 2;
}
if(LOG_WARN.equals(LOG_LEVEL)){
logLevel = 1;
}
}
/**
* 獲取xml根節點.
*/
public Element getXmlRoot() {
Element root = null;
try {
SAXReader sax=new SAXReader();//建立一個SAXReader物件
File xmlFile=new File(PropertyUtils.getProperty("filePath"));//根據指定的路徑建立file物件
sax.setEncoding("gbk");
Document document;
document = sax.read(xmlFile);
root=document.getRootElement();//獲取根節點
} catch (DocumentException e) {
e.printStackTrace();
}
return root;
}
/**
* 根據指定檔案獲取xml根節點.
* @param file
* @return
*/
public Element getXmlRoot(File xmlFile){
Element root = null;
try{
SAXReader sax=new SAXReader();//建立一個SAXReader物件
sax.setEncoding("gbk");
Document document;
document = sax.read(xmlFile);
root=document.getRootElement();//獲取根節點
}catch(Exception e){
e.printStackTrace();
}
return root;
}
/**
* 讀取xml檔案.
*/
public void readXml(Element root) {
PreparedStatement pstmt=null;
try{
//現在應該根據根節點找到全部的子節點
Iterator<?> iter = root.elementIterator();
while(iter.hasNext()){
Element item = (Element) iter.next();//取得每一條資料
/**主鍵是否重複**/
boolean isPkSerpico = false;
//=========獲取資料庫表字段名=========
String sql = "select * from "+PropertyUtils.getProperty("destTable");
//拼裝SQL
StringBuffer insertSql = new StringBuffer("insert into "+PropertyUtils.getProperty("destTable")+"(");
pstmt = this.conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery(sql);
ResultSetMetaData data = rs.getMetaData();
//當前ID值
String currentId = "";
//資料庫表主鍵
String pkName = null;
//1通過連接獲取表的主鍵
DatabaseMetaData dbMeta = this.conn.getMetaData();
ResultSet pkRSet = dbMeta.getPrimaryKeys(null, null, PropertyUtils.getProperty("destTable").toUpperCase());
while(pkRSet.next()){
pkName = (String) pkRSet.getObject(4);
}
//2如果資料庫表沒有設定主鍵則取得第一列
if(pkName == null){
pkName = data.getColumnName(1);
}
//主鍵的值
List<String> idValues = getIdValue(pkName, PropertyUtils.getProperty("destTable").toUpperCase());
//*************************
for(int i=1;i<=data.getColumnCount();i++){
//獲得指定列的列名
String columnName = data.getColumnName(i);
insertSql.append(columnName).append(",");
}
insertSql.deleteCharAt(insertSql.length()-1).append(") values(");
//迴圈判斷欄位型別並給值
for(int i=1; i<=data.getColumnCount(); i++){
String value = null;//接受字串或日期格式
String isNumber = "";//是否是NUMBER或DATE型別(0:不是,1:是)
//獲得指定列的列名
String columnName = data.getColumnName(i);
//獲得指定列的資料型別名
String columnTypeName = data.getColumnTypeName(i);
if("VARCHAR2".equals(columnTypeName)){
if("".equals(item.elementText(columnName.toLowerCase())) || "null".equals(item.elementText(columnName.toLowerCase()))
||item.elementText(columnName.toLowerCase())==null){
value = "NULL";
}else{
value = item.elementText(columnName.toLowerCase());
}
if(logLevel >=3){
logger.info("共【"+data.getColumnCount()+"】列;給第【"+i+"】列,型別為:【"+columnTypeName+"】的:【"+columnName+"】賦值內容為:【"+value+"】");
}
}
if("DATE".equals(columnTypeName)){
//如果從xml中取出的時間值為null時,拼接的sql不需要"'".
isNumber = IS_NUMBER_OR_DATE;
if("".equals(item.elementText(columnName.toLowerCase())) || "null".equals(item.elementText(columnName.toLowerCase()))
|| item.elementText(columnName.toLowerCase())==null){
value = "to_date(NULL, 'yyyy-MM-dd HH:mi:ss')";
}else{
value = "to_date("+"'"+item.elementText(columnName.toLowerCase()).replace("T", " ")+"'"+", 'yyyy-mm-dd HH24:mi:ss')";
}
if(logLevel >=3){
logger.info("共【"+data.getColumnCount()+"】列;給第【"+i+"】列,型別為:【"+columnTypeName+"】的:【"+columnName+"】賦值內容為:【"+value+"】");
}
}
if("NUMBER".equals(columnTypeName)){
isNumber = IS_NUMBER_OR_DATE;
if("".equals(item.elementText(columnName.toLowerCase())) || "null".equals(item.elementText(columnName.toLowerCase()))
|| item.elementText(columnName.toLowerCase())==null){
value="NULL";
}else{
value = item.elementText(columnName.toLowerCase());
}
if(logLevel >=3){
logger.info("共【"+data.getColumnCount()+"】列;給第【"+i+"】列,型別為:【"+columnTypeName+"】的:【"+columnName+"】賦值內容為:【"+value+"】");
}
}
if(IS_NUMBER_OR_DATE.equals(isNumber)){
insertSql.append(value).append(",");
}else{
insertSql.append("'"+value+"'").append(",");
}
}
insertSql.deleteCharAt(insertSql.length()-1).append(")");
if(logLevel >=2){
logger.info("執行的SQL語句為:"+insertSql);
}
//如果有主鍵重複,則update(刪除老的資料,再增加新的資料)
for(String id : idValues){
if(!"".equals(item.elementText(pkName.toLowerCase())) && item.elementText(pkName.toLowerCase()).equals(id)){
isPkSerpico = true;//已存在重複的ID
currentId = id;
}
}
//如果ID重複
if(isPkSerpico){
//如果刪除老資料成功
if(POWER_ON.equals(PropertyUtils.getProperty("power"))){
if(removeById(pkName, currentId, PropertyUtils.getProperty("destTable").toUpperCase())){
insertData(this.conn, insertSql.toString());
}else{
if(logLevel >=1){
logger.info("*******************ID為【"+currentId+"】的資料刪除失敗!*******************");
}
}
}else{
if(logLevel >=1){
logger.info("****************您已關閉資料寫入操作!****************");
}
}
}else{//ID不重複
if(POWER_ON.equals(PropertyUtils.getProperty("power"))){
insertData(this.conn, insertSql.toString());
}
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
this.close(pstmt);
}
// this.moveFile(PropertyUtils.getProperty("filePath"), PropertyUtils.getProperty("toPath")+"\\", PropertyUtils.getProperty("suffix"));
}
public boolean insertData(Connection conn, String sql) throws SQLException{
boolean flag = false;
PreparedStatement pstmt=null;
pstmt = this.conn.prepareStatement(sql);
if(pstmt.executeUpdate()>0){
++count;
flag=true;
if(logLevel >=1){
logger.info("****************成功插入【"+count+"】條資料!****************");
}
}else{
if(logLevel >=1){
logger.info("****************插如資料失敗!****************");
}
}
return flag;
}
/**
* 根據主鍵名稱和表名稱獲取該條資料的主鍵值.
* @param pkName 主鍵名稱
* @param tableName 表名稱
* @return 主鍵值
* @throws SQLException
*/
public List<String> getIdValue(String pkName, String tableName){
List<String> idList = new ArrayList<String>();
PreparedStatement pstmt=null;
String sql ="select "+pkName+" from "+tableName;
try {
pstmt = this.conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
idList.add(rs.getString(1));
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
this.close(pstmt);
}
return idList;
}
/**
* 根據ID刪除資料.
* @param pkName 主鍵名稱
* @param pkValue 主鍵值
* @param tableName 表名稱
* @return
* @throws SQLException
*/
public boolean removeById(String pkName, String pkValue, String tableName) {
PreparedStatement pstmt=null;
boolean flag = false;
String sql = "delete from "+ tableName +" where "+pkName+"=?";
if(logLevel >=1){
logger.info("刪除的語句:"+sql+";"+pkName+"="+pkValue);
}
try {
pstmt = this.conn.prepareStatement(sql);
pstmt.setString(1, pkValue);
if (pstmt.executeUpdate() > 0) {
flag = true;
if(logLevel >=1){
logger.info("********************成功刪除ID為:【"+pkValue+"】的資料********************");
}
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
this.close(pstmt);
}
return flag;
}
public void close(PreparedStatement pstmt){
if(pstmt != null){
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public void close(PreparedStatement pstmt, Connection conn){
if(pstmt != null){
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
@Override
public void readXmlsByPath(String path) {
File file = new File(path);
if(Strings.isEmpty(path) || !file.exists()){
if(logLevel >=1){
logger.info("******************檔案路徑不存在!******************");
}
return;
}
//如果是目錄
if(file.isDirectory()){
File fs[] = file.listFiles();
for(File f : fs){
if(f.isDirectory()){
readXmlsByPath(f.toString());
}else{
this.readXml(this.getXmlRoot(f));
this.moveFile(PropertyUtils.getProperty("filePath"), PropertyUtils.getProperty("toPath"), f, PropertyUtils.getProperty("suffix"));
}
}
}else{//如果不是目錄
this.readXml(getXmlRoot(file));
this.moveFile(PropertyUtils.getProperty("filePath"), PropertyUtils.getProperty("toPath"), file, PropertyUtils.getProperty("suffix"));
}
}
/**
* 移動檔案.
* @param fromPath 源路徑
* @param toPath 部門路徑
* @param file 要移動的檔案
* @param suffix 移動後的檔案字尾
*/
public boolean moveFile(String fromPath, String toPath, File file, String suffix){
boolean flag = false;
if(Strings.isEmpty(fromPath) || Strings.isEmpty(toPath) || Strings.isEmpty(suffix)){
if(Strings.isEmpty(fromPath)){
if(logLevel >=1){
logger.info("******************移動檔案的源路徑不能為空!******************");
}
}
if(Strings.isEmpty(toPath)){
if(logLevel >=1){
logger.info("******************移動檔案的目標徑不能為空!******************");
}
}
if(Strings.isEmpty(suffix)){
if(logLevel >=1){
logger.info("******************請指定移動檔案後的檔名字尾!******************");
}
}
return false;
}
if(!Strings.isEmpty(fromPath) && !Strings.isEmpty(toPath) && !Strings.isEmpty(suffix)){
File fromFile = new File(fromPath+File.separator+file.getName());
File destPath = new File(toPath);
if(!destPath.exists()){
destPath.mkdirs();
}
if(fromFile.renameTo(new File(destPath+File.separator, file.getName() + "." + suffix))){
if(logLevel >=1){
logger.info("******************檔案從【"+fromPath+"】移動到【"+toPath+"】成功!******************");
flag = true;
}
}else{
if(logLevel >=1){
logger.info("******************檔案從【"+fromPath+"】移動到【"+toPath+"】失敗!******************");
}
}
}
return flag;
}
}
操作類:
public class Operator {
public static void main(String args[]){
Operator.execute();
}
/**
* 執行讀取增量xml資料到資料庫.
*/
public static void execute(){
// Element root = Factory.getIOperateInstance().getXmlRoot();
// Factory.getIOperateInstance().readXml(root);
String path = PropertyUtils.getProperty("filePath");
Factory.getIOperateInstance().readXmlsByPath(path);
}
}
配置檔案:
#************************讀取增量Xml資料到資料庫資訊配置開始************************
#jdbc連結引數
jdbc.driverClassName oracle.jdbc.driver.OracleDriver
#jdbc.url jdbc:oracle:thin:@10.xxx.xxx.xxxxx:1521:ORCL
#jdbc.userName xxxxxx
#jdbc.password xxxxxx
#------------主要修改以下兩個配置--------------
#解析xml檔案路徑源路徑
filePath e:\\import\\test\\test11
#移動檔案到目標路徑
toPath e:\\import\\test\\test44
#移動檔案後的字尾名
suffix bak
#解析xml之後移入的bak目錄
bakPath
#---------------------------------------
#執行從xml寫入到資料庫的操作開關(1:開啟,0:關閉)
power 1
#列印插入資料日誌資訊(debug:指定日誌資訊的最低輸出級別;info:日誌二級輸出;warn:日誌三級輸出.)
log.level warn
#定時器配置時間
readXmlTime 0 5 10 * * ?
#************************讀取增量Xml資料到資料庫資訊配置結束************************
執行結果
根據需求修改表名稱和xml檔案路徑名稱兩個常量,執行程式:
控制檯列印結果:
共【68】列;給第【1】列,型別為:【VARCHAR2】的:【CORP_INFO_ID】賦值內容為:【20100816215830297313】
共【68】列;給第【2】列,型別為:【VARCHAR2】的:【ORGAN_CODE】賦值內容為:【765955335】
共【68】列;給第【3】列,型別為:【VARCHAR2】的:【ENTITY_ID】賦值內容為:【270000032004080500176】
共【68】列;給第【4】列,型別為:【VARCHAR2】的:【CORP_NAME】賦值內容為:【上海煌虹建築裝飾設計工程有限公司】
共【68】列;給第【5】列,型別為:【VARCHAR2】的:【CORP_TYPE】賦值內容為:【00010100】
共【68】列;給第【6】列,型別為:【VARCHAR2】的:【PERSON_NAME】賦值內容為:【黃從高】
共【68】列;給第【7】列,型別為:【VARCHAR2】的:【ADDRESS】賦值內容為:【上海市松江區泖港鎮中南路7號B區186號】
共【68】列;給第【8】列,型別為:【VARCHAR2】的:【AREA_CODE】賦值內容為:【松江】
共【68】列;給第【9】列,型別為:【VARCHAR2】的:【ZIP】賦值內容為:【201607】
共【68】列;給第【10】列,型別為:【VARCHAR2】的:【TELEPHONE】賦值內容為:【62418078】
共【68】列;給第【11】列,型別為:【DATE】的:【ESTABLISH_DATE】賦值內容為:【to_date('2004-08-05 00:00:00', 'yyyy-mm-dd HH24:mi:ss')】
共【68】列;給第【12】列,型別為:【NUMBER】的:【REG_CAPITAL3】賦值內容為:【NULL】
共【68】列;給第【13】列,型別為:【VARCHAR2】的:【CURRENCY】賦值內容為:【人民幣】
共【68】列;給第【14】列,型別為:【VARCHAR2】的:【BUSINESS_SCOPE】賦值內容為:【建築裝飾裝修工程與設計】
共【68】列;給第【15】列,型別為:【VARCHAR2】的:【PERSON_CERT_TYPE】賦值內容為:【NULL】
共【68】列;給第【16】列,型別為:【VARCHAR2】的:【PERSON_CERT_CODE】賦值內容為:【NULL】
共【68】列;給第【17】列,型別為:【VARCHAR2】的:【INDUSTRY_CODE】賦值內容為:【E5010】
共【68】列;給第【18】列,型別為:【VARCHAR2】的:【ORGANIZERS】賦值內容為:【NULL】
共【68】列;給第【19】列,型別為:【VARCHAR2】的:【FUNDING_SRC】賦值內容為:【NULL】
共【68】列;給第【20】列,型別為:【VARCHAR2】的:【REG_NO】賦值內容為:【310227001057592】
共【68】列;給第【21】列,型別為:【VARCHAR2】的:【RECEIVING_ORGAN】賦值內容為:【270000】
共【68】列;給第【22】列,型別為:【VARCHAR2】的:【REPEAL_REASON】賦值內容為:【NULL】
共【68】列;給第【23】列,型別為:【DATE】的:【REPEAL_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【24】列,型別為:【DATE】的:【CHANGE_DATE】賦值內容為:【to_date('2016-03-16 13:33:00', 'yyyy-mm-dd HH24:mi:ss')】
共【68】列;給第【25】列,型別為:【VARCHAR2】的:【CHANGE_ITEM】賦值內容為:【NULL】
共【68】列;給第【26】列,型別為:【VARCHAR2】的:【REPEAL_ORGAN】賦值內容為:【NULL】
共【68】列;給第【27】列,型別為:【NUMBER】的:【BRANCH_NUM】賦值內容為:【NULL】
共【68】列;給第【28】列,型別為:【NUMBER】的:【REPRESENT_NUM】賦值內容為:【NULL】
共【68】列;給第【29】列,型別為:【DATE】的:【REG_UPD_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【30】列,型別為:【VARCHAR2】的:【TAXPAYERS_CODE】賦值內容為:【310227765955335】
共【68】列;給第【31】列,型別為:【VARCHAR2】的:【TAX_CODE】賦值內容為:【13102275100】
共【68】列;給第【32】列,型別為:【DATE】的:【TAX_REG_DATE】賦值內容為:【to_date('2004-08-13', 'yyyy-mm-dd HH24:mi:ss')】
共【68】列;給第【33】列,型別為:【VARCHAR2】的:【TAX_CHGE_CONTENT】賦值內容為:【納稅人名稱,財務負責人姓名XXXXX】
共【68】列;給第【34】列,型別為:【DATE】的:【TAX_CHGE_DATE】賦值內容為:【to_date('2015-01-22', 'yyyy-mm-dd HH24:mi:ss')】
共【68】列;給第【35】列,型別為:【VARCHAR2】的:【TAX_REPEAL_REASON】賦值內容為:【NULL】
共【68】列;給第【36】列,型別為:【DATE】的:【TAX_REPEAL_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【37】列,型別為:【VARCHAR2】的:【TAX_REPEAL_ORGAN】賦值內容為:【NULL】
共【68】列;給第【38】列,型別為:【VARCHAR2】的:【BUSINESS_ADDRESS】賦值內容為:【上海市長寧區玉屏南路520弄15號】
共【68】列;給第【39】列,型別為:【DATE】的:【TAX_UPD_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【40】列,型別為:【DATE】的:【ORGANCODE_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【41】列,型別為:【DATE】的:【ORGCODE_CHGDATE】賦值內容為:【to_date('2010-03-12', 'yyyy-mm-dd HH24:mi:ss')】
共【68】列;給第【42】列,型別為:【DATE】的:【ORGCODE_REPEALDATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【43】列,型別為:【DATE】的:【QS_UPD_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【44】列,型別為:【VARCHAR2】的:【BD_RESULT】賦值內容為:【NULL】
共【68】列;給第【45】列,型別為:【VARCHAR2】的:【QYK_ID】賦值內容為:【NULL】
共【68】列;給第【46】列,型別為:【DATE】的:【UPD_TIME】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【47】列,型別為:【VARCHAR2】的:【TRIM_CORP_NAME】賦值內容為:【NULL】
共【68】列;給第【48】列,型別為:【VARCHAR2】的:【FUNDS_CODE】賦值內容為:【NULL】
共【68】列;給第【49】列,型別為:【DATE】的:【FUNDS_OPEN_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【50】列,型別為:【DATE】的:【FUNDS_REPEAL_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【51】列,型別為:【DATE】的:【FUNDS_UPD_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【52】列,型別為:【VARCHAR2】的:【FUNDSADD_CODE】賦值內容為:【NULL】
共【68】列;給第【53】列,型別為:【DATE】的:【FUNDSADD_OPEN_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【54】列,型別為:【DATE】的:【FUNDSADD_REPEAL_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【55】列,型別為:【DATE】的:【FUNDSADD_UPD_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【56】列,型別為:【VARCHAR2】的:【SOCIAL_SECURITY_CODE】賦值內容為:【NULL】
共【68】列;給第【57】列,型別為:【DATE】的:【SOCIAL_SECURITY_OPEN_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【58】列,型別為:【DATE】的:【SOCIAL_SECURITY_REPEAL_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【59】列,型別為:【DATE】的:【SOCIAL_SECURITY_UPD_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【60】列,型別為:【VARCHAR2】的:【LK_STATUS】賦值內容為:【NULL】
共【68】列;給第【61】列,型別為:【VARCHAR2】的:【IS_ZMQ】賦值內容為:【NULL】
共【68】列;給第【62】列,型別為:【DATE】的:【INSERT_TIME】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【63】列,型別為:【VARCHAR2】的:【CORP_STATUS】賦值內容為:【NULL】
共【68】列;給第【64】列,型別為:【VARCHAR2】的:【IS_GSL】賦值內容為:【NULL】
共【68】列;給第【65】列,型別為:【VARCHAR2】的:【IS_RECENTLY_ZMQ】賦值內容為:【NULL】
共【68】列;給第【66】列,型別為:【VARCHAR2】的:【IS_WEB_SEND】賦值內容為:【NULL】
共【68】列;給第【67】列,型別為:【VARCHAR2】的:【UNI_SC_ID】賦值內容為:【913101177659553356】
共【68】列;給第【68】列,型別為:【NUMBER】的:【REG_CAPITAL】賦值內容為:【600】
執行的SQL語句為:insert into CORP_INFO_TEST(CORP_INFO_ID,ORGAN_CODE,ENTITY_ID,CORP_NAME,CORP_TYPE,PERSON_NAME,ADDRESS,AREA_CODE,ZIP,TELEPHONE,ESTABLISH_DATE,REG_CAPITAL3,CURRENCY,BUSINESS_SCOPE,PERSON_CERT_TYPE,PERSON_CERT_CODE,INDUSTRY_CODE,ORGANIZERS,FUNDING_SRC,REG_NO,RECEIVING_ORGAN,REPEAL_REASON,REPEAL_DATE,CHANGE_DATE,CHANGE_ITEM,REPEAL_ORGAN,BRANCH_NUM,REPRESENT_NUM,REG_UPD_DATE,TAXPAYERS_CODE,TAX_CODE,TAX_REG_DATE,TAX_CHGE_CONTENT,TAX_CHGE_DATE,TAX_REPEAL_REASON,TAX_REPEAL_DATE,TAX_REPEAL_ORGAN,BUSINESS_ADDRESS,TAX_UPD_DATE,ORGANCODE_DATE,ORGCODE_CHGDATE,ORGCODE_REPEALDATE,QS_UPD_DATE,BD_RESULT,QYK_ID,UPD_TIME,TRIM_CORP_NAME,FUNDS_CODE,FUNDS_OPEN_DATE,FUNDS_REPEAL_DATE,FUNDS_UPD_DATE,FUNDSADD_CODE,FUNDSADD_OPEN_DATE,FUNDSADD_REPEAL_DATE,FUNDSADD_UPD_DATE,SOCIAL_SECURITY_CODE,SOCIAL_SECURITY_OPEN_DATE,SOCIAL_SECURITY_REPEAL_DATE,SOCIAL_SECURITY_UPD_DATE,LK_STATUS,IS_ZMQ,INSERT_TIME,CORP_STATUS,IS_GSL,IS_RECENTLY_ZMQ,IS_WEB_SEND,UNI_SC_ID,REG_CAPITAL) values('20100816215830297313','765955335','270000032004080500176','上海煌虹建築裝飾設計工程有限公司','00010100','黃從高','上海市松江區泖港鎮中南路7號B區186號','松江','201607','62418078',to_date('2004-08-05 00:00:00', 'yyyy-mm-dd HH24:mi:ss'),NULL,'人民幣','建築裝飾裝修工程與設計','NULL','NULL','E5010','NULL','NULL','310227001057592','270000','NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date('2016-03-16 13:33:00', 'yyyy-mm-dd HH24:mi:ss'),'NULL','NULL',NULL,NULL,to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'310227765955335','13102275100',to_date('2004-08-13', 'yyyy-mm-dd HH24:mi:ss'),'納稅人名稱,財務負責人姓名XXXXX',to_date('2015-01-22', 'yyyy-mm-dd HH24:mi:ss'),'NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL','上海市長寧區玉屏南路520弄15號',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date('2010-03-12', 'yyyy-mm-dd HH24:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL','NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL','NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL','NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL','NULL','NULL','NULL','913101177659553356',600)
共【68】列;給第【1】列,型別為:【VARCHAR2】的:【CORP_INFO_ID】賦值內容為:【20100816215830455984】
共【68】列;給第【2】列,型別為:【VARCHAR2】的:【ORGAN_CODE】賦值內容為:【557439256】
共【68】列;給第【3】列,型別為:【VARCHAR2】的:【ENTITY_ID】賦值內容為:【270000032010062100052】
共【68】列;給第【4】列,型別為:【VARCHAR2】的:【CORP_NAME】賦值內容為:【上海翔晟包裝材料有限公司】
共【68】列;給第【5】列,型別為:【VARCHAR2】的:【CORP_TYPE】賦值內容為:【00010100】
共【68】列;給第【6】列,型別為:【VARCHAR2】的:【PERSON_NAME】賦值內容為:【張瑞勤】
共【68】列;給第【7】列,型別為:【VARCHAR2】的:【ADDRESS】賦值內容為:【上海市松江區泖港鎮鬆金公路8238號2幢】
共【68】列;給第【8】列,型別為:【VARCHAR2】的:【AREA_CODE】賦值內容為:【松江】
共【68】列;給第【9】列,型別為:【VARCHAR2】的:【ZIP】賦值內容為:【201607】
共【68】列;給第【10】列,型別為:【VARCHAR2】的:【TELEPHONE】賦值內容為:【15000428739】
共【68】列;給第【11】列,型別為:【DATE】的:【ESTABLISH_DATE】賦值內容為:【to_date('2010-06-21 00:00:00', 'yyyy-mm-dd HH24:mi:ss')】
共【68】列;給第【12】列,型別為:【NUMBER】的:【REG_CAPITAL3】賦值內容為:【NULL】
共【68】列;給第【13】列,型別為:【VARCHAR2】的:【CURRENCY】賦值內容為:【人民幣】
共【68】列;給第【14】列,型別為:【VARCHAR2】的:【BUSINESS_SCOPE】賦值內容為:【包裝材料、泡沫製品批發零售;塑料製品加工及銷售】
共【68】列;給第【15】列,型別為:【VARCHAR2】的:【PERSON_CERT_TYPE】賦值內容為:【NULL】
共【68】列;給第【16】列,型別為:【VARCHAR2】的:【PERSON_CERT_CODE】賦值內容為:【NULL】
共【68】列;給第【17】列,型別為:【VARCHAR2】的:【INDUSTRY_CODE】賦值內容為:【F5141】
共【68】列;給第【18】列,型別為:【VARCHAR2】的:【ORGANIZERS】賦值內容為:【NULL】
共【68】列;給第【19】列,型別為:【VARCHAR2】的:【FUNDING_SRC】賦值內容為:【NULL】
共【68】列;給第【20】列,型別為:【VARCHAR2】的:【REG_NO】賦值內容為:【310227001548657】
共【68】列;給第【21】列,型別為:【VARCHAR2】的:【RECEIVING_ORGAN】賦值內容為:【270000】
共【68】列;給第【22】列,型別為:【VARCHAR2】的:【REPEAL_REASON】賦值內容為:【NULL】
共【68】列;給第【23】列,型別為:【DATE】的:【REPEAL_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【24】列,型別為:【DATE】的:【CHANGE_DATE】賦值內容為:【to_date('2016-03-16 13:30:00', 'yyyy-mm-dd HH24:mi:ss')】
共【68】列;給第【25】列,型別為:【VARCHAR2】的:【CHANGE_ITEM】賦值內容為:【NULL】
共【68】列;給第【26】列,型別為:【VARCHAR2】的:【REPEAL_ORGAN】賦值內容為:【NULL】
共【68】列;給第【27】列,型別為:【NUMBER】的:【BRANCH_NUM】賦值內容為:【NULL】
共【68】列;給第【28】列,型別為:【NUMBER】的:【REPRESENT_NUM】賦值內容為:【NULL】
共【68】列;給第【29】列,型別為:【DATE】的:【REG_UPD_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【30】列,型別為:【VARCHAR2】的:【TAXPAYERS_CODE】賦值內容為:【310227557439256】
共【68】列;給第【31】列,型別為:【VARCHAR2】的:【TAX_CODE】賦值內容為:【13102275100】
共【68】列;給第【32】列,型別為:【DATE】的:【TAX_REG_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【33】列,型別為:【VARCHAR2】的:【TAX_CHGE_CONTENT】賦值內容為:【註冊地址,生產經營地址,經營範圍】
共【68】列;給第【34】列,型別為:【DATE】的:【TAX_CHGE_DATE】賦值內容為:【to_date('2014-03-24', 'yyyy-mm-dd HH24:mi:ss')】
共【68】列;給第【35】列,型別為:【VARCHAR2】的:【TAX_REPEAL_REASON】賦值內容為:【NULL】
共【68】列;給第【36】列,型別為:【DATE】的:【TAX_REPEAL_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【37】列,型別為:【VARCHAR2】的:【TAX_REPEAL_ORGAN】賦值內容為:【NULL】
共【68】列;給第【38】列,型別為:【VARCHAR2】的:【BUSINESS_ADDRESS】賦值內容為:【上海市松江區泖港鎮鬆金公路7836號】
共【68】列;給第【39】列,型別為:【DATE】的:【TAX_UPD_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【40】列,型別為:【DATE】的:【ORGANCODE_DATE】賦值內容為:【to_date('2010-06-22', 'yyyy-mm-dd HH24:mi:ss')】
共【68】列;給第【41】列,型別為:【DATE】的:【ORGCODE_CHGDATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【42】列,型別為:【DATE】的:【ORGCODE_REPEALDATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【43】列,型別為:【DATE】的:【QS_UPD_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【44】列,型別為:【VARCHAR2】的:【BD_RESULT】賦值內容為:【NULL】
共【68】列;給第【45】列,型別為:【VARCHAR2】的:【QYK_ID】賦值內容為:【NULL】
共【68】列;給第【46】列,型別為:【DATE】的:【UPD_TIME】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【47】列,型別為:【VARCHAR2】的:【TRIM_CORP_NAME】賦值內容為:【NULL】
共【68】列;給第【48】列,型別為:【VARCHAR2】的:【FUNDS_CODE】賦值內容為:【NULL】
共【68】列;給第【49】列,型別為:【DATE】的:【FUNDS_OPEN_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【50】列,型別為:【DATE】的:【FUNDS_REPEAL_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【51】列,型別為:【DATE】的:【FUNDS_UPD_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【52】列,型別為:【VARCHAR2】的:【FUNDSADD_CODE】賦值內容為:【NULL】
共【68】列;給第【53】列,型別為:【DATE】的:【FUNDSADD_OPEN_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【54】列,型別為:【DATE】的:【FUNDSADD_REPEAL_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【55】列,型別為:【DATE】的:【FUNDSADD_UPD_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【56】列,型別為:【VARCHAR2】的:【SOCIAL_SECURITY_CODE】賦值內容為:【NULL】
共【68】列;給第【57】列,型別為:【DATE】的:【SOCIAL_SECURITY_OPEN_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【58】列,型別為:【DATE】的:【SOCIAL_SECURITY_REPEAL_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【59】列,型別為:【DATE】的:【SOCIAL_SECURITY_UPD_DATE】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【60】列,型別為:【VARCHAR2】的:【LK_STATUS】賦值內容為:【NULL】
共【68】列;給第【61】列,型別為:【VARCHAR2】的:【IS_ZMQ】賦值內容為:【NULL】
共【68】列;給第【62】列,型別為:【DATE】的:【INSERT_TIME】賦值內容為:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;給第【63】列,型別為:【VARCHAR2】的:【CORP_STATUS】賦值內容為:【NULL】
共【68】列;給第【64】列,型別為:【VARCHAR2】的:【IS_GSL】賦值內容為:【NULL】
共【68】列;給第【65】列,型別為:【VARCHAR2】的:【IS_RECENTLY_ZMQ】賦值內容為:【NULL】
共【68】列;給第【66】列,型別為:【VARCHAR2】的:【IS_WEB_SEND】賦值內容為:【NULL】
共【68】列;給第【67】列,型別為:【VARCHAR2】的:【UNI_SC_ID】賦值內容為:【91310117557439256R】
共【68】列;給第【68】列,型別為:【NUMBER】的:【REG_CAPITAL】賦值內容為:【100】
執行的SQL語句為:insert into CORP_INFO_TEST(CORP_INFO_ID,ORGAN_CODE,ENTITY_ID,CORP_NAME,CORP_TYPE,PERSON_NAME,ADDRESS,AREA_CODE,ZIP,TELEPHONE,ESTABLISH_DATE,REG_CAPITAL3,CURRENCY,BUSINESS_SCOPE,PERSON_CERT_TYPE,PERSON_CERT_CODE,INDUSTRY_CODE,ORGANIZERS,FUNDING_SRC,REG_NO,RECEIVING_ORGAN,REPEAL_REASON,REPEAL_DATE,CHANGE_DATE,CHANGE_ITEM,REPEAL_ORGAN,BRANCH_NUM,REPRESENT_NUM,REG_UPD_DATE,TAXPAYERS_CODE,TAX_CODE,TAX_REG_DATE,TAX_CHGE_CONTENT,TAX_CHGE_DATE,TAX_REPEAL_REASON,TAX_REPEAL_DATE,TAX_REPEAL_ORGAN,BUSINESS_ADDRESS,TAX_UPD_DATE,ORGANCODE_DATE,ORGCODE_CHGDATE,ORGCODE_REPEALDATE,QS_UPD_DATE,BD_RESULT,QYK_ID,UPD_TIME,TRIM_CORP_NAME,FUNDS_CODE,FUNDS_OPEN_DATE,FUNDS_REPEAL_DATE,FUNDS_UPD_DATE,FUNDSADD_CODE,FUNDSADD_OPEN_DATE,FUNDSADD_REPEAL_DATE,FUNDSADD_UPD_DATE,SOCIAL_SECURITY_CODE,SOCIAL_SECURITY_OPEN_DATE,SOCIAL_SECURITY_REPEAL_DATE,SOCIAL_SECURITY_UPD_DATE,LK_STATUS,IS_ZMQ,INSERT_TIME,CORP_STATUS,IS_GSL,IS_RECENTLY_ZMQ,IS_WEB_SEND,UNI_SC_ID,REG_CAPITAL) values('20100816215830455984','557439256','270000032010062100052','上海翔晟包裝材料有限公司','00010100','張瑞勤','上海市松江區泖港鎮鬆金公路8238號2幢','松江','201607','15000428739',to_date('2010-06-21 00:00:00', 'yyyy-mm-dd HH24:mi:ss'),NULL,'人民幣','包裝材料、泡沫製品批發零售;塑料製品加工及銷售','NULL','NULL','F5141','NULL','NULL','310227001548657','270000','NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date('2016-03-16 13:30:00', 'yyyy-mm-dd HH24:mi:ss'),'NULL','NULL',NULL,NULL,to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'310227557439256','13102275100',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'註冊地址,生產經營地址,經營範圍',to_date('2014-03-24', 'yyyy-mm-dd HH24:mi:ss'),'NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL','上海市松江區泖港鎮鬆金公路7836號',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date('2010-06-22', 'yyyy-mm-dd HH24:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL','NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL','NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL','NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL','NULL','NULL','NULL','91310117557439256R',100)
再來檢視資料庫是否插入成功:
兩條資料已經成功插入到資料庫中。
以上增量xml資料是包含有兩個<corporation_info>節點的資料,如果xml中包含有多少個該節點,則資料庫中就對應插入多少條資料。
進入實戰操作:
需要匯入的源資料:增量資料xml如下:
再看看資料庫截圖:
說明:此程式經過本人的不斷優化,最終形成的一個實用工具。