读取增量xml数据到数据库

前端之家收集整理的这篇文章主要介绍了读取增量xml数据到数据库前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

读取增量xml数据到数据库

作者:Vashon

时间:20160323

昨天接到领导安排的任务:将系统产生的增量xml数据插入到另一个项目中的数据库中(数据库表结构一样)。

网上查找了许多例子,都是没有考虑到数据类型或其他的细节,如果改变数据库表则再需要修改程序,这显得很麻烦。以下是本人经过一天的时间做出来的一个小工具类,方便以后使用。

增量xml数据格式(该xml样例只包含两条目标插入数据,实际文件中是包含很多条的。)如下:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <project>
  3. <corporation_info>
  4. <corp_info_id>20100816215830297313</corp_info_id>
  5. <organ_code>765955335</organ_code>
  6. <entity_id>270000032004080500176</entity_id>
  7. <corp_name>上海煌虹建筑装饰设计工程有限公司</corp_name>
  8. <corp_type>00010100</corp_type>
  9. <person_name>黄XXXX</person_name>
  10. <address>上海市松江区泖港镇中南路7号B区186号</address>
  11. <area_code>松江</area_code>
  12. <zip>201607</zip>
  13. <telephone>62418078</telephone>
  14. <establish_date>2004-08-05T00:00:00</establish_date>
  15. <reg_capital>600</reg_capital>
  16. <currency>人民币</currency>
  17. <business_scope>建筑装饰装修工程与设计</business_scope>
  18. <person_cert_type></person_cert_type>
  19. <person_cert_code></person_cert_code>
  20. <industry_code>E5010</industry_code>
  21. <organizers></organizers>
  22. <funding_src></funding_src>
  23. <reg_no>310227001057592</reg_no>
  24. <receiving_organ>270000</receiving_organ>
  25. <repeal_reason></repeal_reason>
  26. <repeal_date></repeal_date>
  27. <change_date>2016-03-16T13:33:00</change_date>
  28. <change_item></change_item>
  29. <repeal_organ></repeal_organ>
  30. <branch_num></branch_num>
  31. <represent_num></represent_num>
  32. <reg_upd_date></reg_upd_date>
  33. <taxpayers_code>310227765955335</taxpayers_code>
  34. <tax_code>13102275103</tax_code>
  35. <tax_reg_date>2004-08-13</tax_reg_date>
  36. <tax_chge_content>纳税人名称,财务负责人姓名XXXXX</tax_chge_content>
  37. <tax_chge_date>2015-01-22</tax_chge_date>
  38. <tax_repeal_reason></tax_repeal_reason>
  39. <tax_repeal_date></tax_repeal_date>
  40. <tax_repeal_organ ></tax_repeal_organ >
  41. <business_address>上海市长宁区玉屏南路520弄15号</business_address>
  42. <tax_upd_date></tax_upd_date>
  43. <organcode_date></organcode_date>
  44. <orgcode_chgdate>2010-03-12</orgcode_chgdate>
  45. <orgcode_repealdate></orgcode_repealdate>
  46. <qs_upd_date></qs_upd_date>
  47. <uni_sc_id>913101177659553356</uni_sc_id>
  48. </corporation_info>
  49.  
  50. <corporation_info>
  51. <corp_info_id>20100816215830455984</corp_info_id>
  52. <organ_code>557439256</organ_code>
  53. <entity_id>270000032010062100052</entity_id>
  54. <corp_name>上海翔晟包装材料有限公司</corp_name>
  55. <corp_type>00010100</corp_type>
  56. <person_name>张XX</person_name>
  57. <address>上海市松江区泖港镇松金公路8238号2幢</address>
  58. <area_code>松江</area_code>
  59. <zip>201607</zip>
  60. <telephone>15000428729</telephone>
  61. <establish_date>2010-06-21T00:00:00</establish_date>
  62. <reg_capital>100</reg_capital>
  63. <currency>人民币</currency>
  64. <business_scope>包装材料、泡沫制品批发零售;塑料制品加工及销售</business_scope>
  65. <person_cert_type></person_cert_type>
  66. <person_cert_code></person_cert_code>
  67. <industry_code>F5141</industry_code>
  68. <organizers></organizers>
  69. <funding_src></funding_src>
  70. <reg_no>310227001548657</reg_no>
  71. <receiving_organ>270000</receiving_organ>
  72. <repeal_reason></repeal_reason>
  73. <repeal_date></repeal_date>
  74. <change_date>2016-03-16T13:30:00</change_date>
  75. <change_item></change_item>
  76. <repeal_organ></repeal_organ>
  77. <branch_num></branch_num>
  78. <represent_num></represent_num>
  79. <reg_upd_date></reg_upd_date>
  80. <taxpayers_code>310227557439256</taxpayers_code>
  81. <tax_code>13102275100</tax_code>
  82. <tax_reg_date></tax_reg_date>
  83. <tax_chge_content>注册地址,生产经营地址,经营范围</tax_chge_content>
  84. <tax_chge_date>2014-03-24</tax_chge_date>
  85. <tax_repeal_reason></tax_repeal_reason>
  86. <tax_repeal_date></tax_repeal_date>
  87. <tax_repeal_organ ></tax_repeal_organ >
  88. <business_address>上海市松江区泖港镇松金公路7836号</business_address>
  89. <tax_upd_date></tax_upd_date>
  90. <organcode_date>2010-06-22</organcode_date>
  91. <orgcode_chgdate></orgcode_chgdate>
  92. <orgcode_repealdate></orgcode_repealdate>
  93. <qs_upd_date></qs_upd_date>
  94. <uni_sc_id>91310117557439256R</uni_sc_id>
  95. </corporation_info>
  96. </project>

以上作为xml文件的例子,在根节点<project>下面有多个子节点<corporation_info>,该子节点是数据库名称。<corporation_info>下面的子节点是表的字段和对应的字段内容

现在需要将这些增量数据插入到另一系统对应的数据库中(数据库表结构一样)。

分析:先获取数据库表结构,遍历表中的字段名称及字段类型,根据条件分别对他们进行处理以及根据属性名称在xml文件中检索。

经过分析实现以及代码优化,最终形成一个工具类,代码如下:

  1. package com.ywx;
  2.  
  3. import java.io.File;
  4. import java.sql.Connection;
  5. import java.sql.DriverManager;
  6. import java.sql.PreparedStatement;
  7. import java.sql.ResultSet;
  8. import java.sql.ResultSetMetaData;
  9. import java.sql.sqlException;
  10. import java.util.Iterator;
  11.  
  12. import org.dom4j.Document;
  13. import org.dom4j.DocumentException;
  14. import org.dom4j.Element;
  15. import org.dom4j.io.SAXReader;
  16.  
  17. /**
  18. * 读取增量xml数据到数据中.
  19. * @author Vashon
  20. *
  21. */
  22. public class XmlToDbMain {
  23. public static void main(String args[]){
  24. XmlToDb xml = new XmlToDb();
  25. xml.execute();
  26. }
  27. }
  28.  
  29. class XmlToDb{
  30. private static final String DBDRIVER="oracle.jdbc.driver.OracleDriver";
  31. private static final String DBURL="jdbc:oracle:thin:@10.1.8.73:1521:ORCL";
  32. private static final String DBUSER="sjsjzx";
  33. private static final String DBPASS="sjsjzx";
  34. private Connection conn = null;
  35. private PreparedStatement pstmt = null;
  36. /*********************根据需求修改以下两个常量*************************/
  37. /**需要导入到的数据库表名**/
  38. public static final String DATA_TABLE = "CORP_INFO";
  39. /**xml文件路径**/
  40. public static final String FILE_PATH = "e:\\import\\dest\\702016031711431764.xml";
  41. /*************************************************************/
  42. /**类型为NUBMBER或DATE**/
  43. public static final String IS_NUMBER_OR_DATE = "1";
  44. public XmlToDb(){
  45. try {
  46. Class.forName(DBDRIVER);//加载驱动程序
  47. conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);
  48. } catch (Exception e) {
  49. e.printStackTrace();
  50. }
  51. }
  52. /**
  53. * 取得连接.
  54. * @return
  55. */
  56. public Connection getConnection(){
  57. return this.conn;
  58. }
  59. /**
  60. * 读取xml并获取根节点.
  61. */
  62. public Element getRoot(){
  63. Element root = null;
  64. try {
  65. SAXReader sax=new SAXReader();//创建一个SAXReader对象
  66. File xmlFile=new File(FILE_PATH);//根据指定的路径创建file对象
  67. sax.setEncoding("gbk");
  68. Document document;
  69. document = sax.read(xmlFile);
  70. root=document.getRootElement();//获取根节点
  71. } catch (DocumentException e) {
  72. e.printStackTrace();
  73. }
  74. return root;
  75. }
  76. /**
  77. * 执行批量插入方法.
  78. */
  79. public void execute(){
  80. try {
  81. //现在应该根据根节点找到全部的子节点
  82. Iterator<?> iter = getRoot().elementIterator();
  83. boolean flag = false;
  84. int count = 0;//插入数据量
  85. while(iter.hasNext()){
  86. ++count;
  87. Element item = (Element) iter.next();
  88. //=========获取数据库表字段名=========
  89. String sql = "select * from "+DATA_TABLE;
  90. //拼装sql
  91. StringBuffer insertsql = new StringBuffer("insert into "+DATA_TABLE+"(");
  92. pstmt = getConnection().prepareStatement(sql);
  93. ResultSet rs = pstmt.executeQuery(sql);
  94. ResultSetMetaData data = rs.getMetaData();
  95. for(int i=1;i<=data.getColumnCount();i++){
  96. //获得所有列的数目及实际列数
  97. int columnCount = data.getColumnCount();
  98. //获得指定列的列名
  99. String columnName = data.getColumnName(i);
  100. //获得指定列的数据类型名
  101. String columnTypeName = data.getColumnTypeName(i);
  102. insertsql.append(columnName).append(",");
  103. }
  104. insertsql.deleteCharAt(insertsql.length()-1).append(") values(");
  105. //循环判断字段类型并给值
  106. for(int i=1; i<=data.getColumnCount(); i++){
  107. String value = null;//接受字符串或日期格式
  108. String isNumber = "";//是否是NUMBER或DATE类型(0:不是,1:是)
  109. //获得指定列的列名
  110. String columnName = data.getColumnName(i);
  111. //获得指定列的数据类型名
  112. String columnTypeName = data.getColumnTypeName(i);
  113. if("VARCHAR2".equals(columnTypeName)){
  114. if("".equals(item.elementText(columnName.toLowerCase())) || "null".equals(item.elementText(columnName.toLowerCase()))
  115. ||item.elementText(columnName.toLowerCase())==null){
  116. value = "NULL";
  117. }else{
  118. value = item.elementText(columnName.toLowerCase());
  119. }
  120. System.out.println("共【"+data.getColumnCount()+"】列;给第【"+i+"】列,类型为:【"+columnTypeName+"】的:【"+columnName+"】赋值内容为:【"+value+"】");
  121. }
  122. if("DATE".equals(columnTypeName)){
  123. //如果从xml中取出的时间值为null时,拼接的sql不需要"'".
  124. isNumber = IS_NUMBER_OR_DATE;
  125. if("".equals(item.elementText(columnName.toLowerCase())) || "null".equals(item.elementText(columnName.toLowerCase()))
  126. || item.elementText(columnName.toLowerCase())==null){
  127. value = "to_date(NULL,'yyyy-MM-dd HH:mi:ss')";
  128. }else{
  129. value = "to_date("+"'"+item.elementText(columnName.toLowerCase()).replace("T"," ")+"'"+",'yyyy-mm-dd HH24:mi:ss')";
  130. }
  131. System.out.println("共【"+data.getColumnCount()+"】列;给第【"+i+"】列,类型为:【"+columnTypeName+"】的:【"+columnName+"】赋值内容为:【"+value+"】");
  132. }
  133. if("NUMBER".equals(columnTypeName)){
  134. isNumber = IS_NUMBER_OR_DATE;
  135. if("".equals(item.elementText(columnName.toLowerCase())) || "null".equals(item.elementText(columnName.toLowerCase()))
  136. || item.elementText(columnName.toLowerCase())==null){
  137. value="NULL";
  138. }else{
  139. value = item.elementText(columnName.toLowerCase());
  140. }
  141. System.out.println("共【"+data.getColumnCount()+"】列;给第【"+i+"】列,类型为:【"+columnTypeName+"】的:【"+columnName+"】赋值内容为:【"+value+"】");
  142. }
  143. if(IS_NUMBER_OR_DATE.equals(isNumber)){
  144. insertsql.append(value).append(",");
  145. }else{
  146. insertsql.append("'"+value+"'").append(",");
  147. }
  148. }
  149. insertsql.deleteCharAt(insertsql.length()-1).append(")");
  150. System.out.println("执行的sql语句为:"+insertsql);
  151. conn = getConnection();
  152. pstmt = conn.prepareStatement(insertsql.toString());
  153. flag = pstmt.execute();
  154. }
  155. if (!flag) {
  156. System.out.println("****************成功插入【"+count+"】条数据!****************");
  157. this.closeConn(conn);
  158. }
  159. } catch (Exception e) {
  160. e.printStackTrace();
  161. }
  162. }
  163. /**
  164. * 关闭连接.
  165. */
  166. public void closeConn(Connection conn){
  167. if(conn != null){
  168. try {
  169. conn.close();
  170. } catch (sqlException e) {
  171. e.printStackTrace();
  172. }
  173. }
  174. }
  175. }



根据需求修改名称和xml文件路径名称两个常量,运行程序:

控制台打印结果:

  1. 共【68】列;给第【1】列,类型为:【VARCHAR2】的:【CORP_INFO_ID】赋值内容为:【20100816215830297313
  2. 共【68】列;给第【2】列,类型为:【VARCHAR2】的:【ORGAN_CODE】赋值内容为:【765955335
  3. 共【68】列;给第【3】列,类型为:【VARCHAR2】的:【ENTITY_ID】赋值内容为:【270000032004080500176
  4. 共【68】列;给第【4】列,类型为:【VARCHAR2】的:【CORP_NAME】赋值内容为:【上海煌虹建筑装饰设计工程有限公司】
  5. 共【68】列;给第【5】列,类型为:【VARCHAR2】的:【CORP_TYPE】赋值内容为:【00010100
  6. 共【68】列;给第【6】列,类型为:【VARCHAR2】的:【PERSON_NAME】赋值内容为:【黄从高】
  7. 共【68】列;给第【7】列,类型为:【VARCHAR2】的:【ADDRESS】赋值内容为:【上海市松江区泖港镇中南路7B186号】
  8. 共【68】列;给第【8】列,类型为:【VARCHAR2】的:【AREA_CODE】赋值内容为:【松江】
  9. 共【68】列;给第【9】列,类型为:【VARCHAR2】的:【ZIP】赋值内容为:【201607
  10. 共【68】列;给第【10】列,类型为:【VARCHAR2】的:【TELEPHONE】赋值内容为:【62418078
  11. 共【68】列;给第【11】列,类型为:【DATE】的:【ESTABLISH_DATE】赋值内容为:【to_date('2004-08-05 00:00:00','yyyy-mm-dd HH24:mi:ss')】
  12. 共【68】列;给第【12】列,类型为:【NUMBER】的:【REG_CAPITAL3】赋值内容为:【NULL
  13. 共【68】列;给第【13】列,类型为:【VARCHAR2】的:【CURRENCY】赋值内容为:【人民币】
  14. 共【68】列;给第【14】列,类型为:【VARCHAR2】的:【BUSINESS_SCOPE】赋值内容为:【建筑装饰装修工程与设计】
  15. 共【68】列;给第【15】列,类型为:【VARCHAR2】的:【PERSON_CERT_TYPE】赋值内容为:【NULL
  16. 共【68】列;给第【16】列,类型为:【VARCHAR2】的:【PERSON_CERT_CODE】赋值内容为:【NULL
  17. 共【68】列;给第【17】列,类型为:【VARCHAR2】的:【INDUSTRY_CODE】赋值内容为:【E5010
  18. 共【68】列;给第【18】列,类型为:【VARCHAR2】的:【ORGANIZERS】赋值内容为:【NULL
  19. 共【68】列;给第【19】列,类型为:【VARCHAR2】的:【FUNDING_SRC】赋值内容为:【NULL
  20. 共【68】列;给第【20】列,类型为:【VARCHAR2】的:【REG_NO】赋值内容为:【310227001057592
  21. 共【68】列;给第【21】列,类型为:【VARCHAR2】的:【RECEIVING_ORGAN】赋值内容为:【270000
  22. 共【68】列;给第【22】列,类型为:【VARCHAR2】的:【REPEAL_REASON】赋值内容为:【NULL
  23. 共【68】列;给第【23】列,类型为:【DATE】的:【REPEAL_DATE】赋值内容为:【to_date(NULL,'yyyy-MM-dd HH:mi:ss')】
  24. 共【68】列;给第【24】列,类型为:【DATE】的:【CHANGE_DATE】赋值内容为:【to_date('2016-03-16 13:33:00','yyyy-mm-dd HH24:mi:ss')】
  25. 共【68】列;给第【25】列,类型为:【VARCHAR2】的:【CHANGE_ITEM】赋值内容为:【NULL
  26. 共【68】列;给第【26】列,类型为:【VARCHAR2】的:【REPEAL_ORGAN】赋值内容为:【NULL
  27. 共【68】列;给第【27】列,类型为:【NUMBER】的:【BRANCH_NUM】赋值内容为:【NULL
  28. 共【68】列;给第【28】列,类型为:【NUMBER】的:【REPRESENT_NUM】赋值内容为:【NULL
  29. 共【68】列;给第【29】列,类型为:【DATE】的:【REG_UPD_DATE】赋值内容为:【to_date(NULL,'yyyy-MM-dd HH:mi:ss')】
  30. 共【68】列;给第【30】列,类型为:【VARCHAR2】的:【TAXPAYERS_CODE】赋值内容为:【310227765955335
  31. 共【68】列;给第【31】列,类型为:【VARCHAR2】的:【TAX_CODE】赋值内容为:【13102275100
  32. 共【68】列;给第【32】列,类型为:【DATE】的:【TAX_REG_DATE】赋值内容为:【to_date('2004-08-13','yyyy-mm-dd HH24:mi:ss')】
  33. 共【68】列;给第【33】列,类型为:【VARCHAR2】的:【TAX_CHGE_CONTENT】赋值内容为:【纳税人名称,财务负责人姓名XXXXX
  34. 共【68】列;给第【34】列,类型为:【DATE】的:【TAX_CHGE_DATE】赋值内容为:【to_date('2015-01-22','yyyy-mm-dd HH24:mi:ss')】
  35. 共【68】列;给第【35】列,类型为:【VARCHAR2】的:【TAX_REPEAL_REASON】赋值内容为:【NULL
  36. 共【68】列;给第【36】列,类型为:【DATE】的:【TAX_REPEAL_DATE】赋值内容为:【to_date(NULL,'yyyy-MM-dd HH:mi:ss')】
  37. 共【68】列;给第【37】列,类型为:【VARCHAR2】的:【TAX_REPEAL_ORGAN】赋值内容为:【NULL
  38. 共【68】列;给第【38】列,类型为:【VARCHAR2】的:【BUSINESS_ADDRESS】赋值内容为:【上海市长宁区玉屏南路52015号】
  39. 共【68】列;给第【39】列,类型为:【DATE】的:【TAX_UPD_DATE】赋值内容为:【to_date(NULL,'yyyy-MM-dd HH:mi:ss')】
  40. 共【68】列;给第【40】列,类型为:【DATE】的:【ORGANCODE_DATE】赋值内容为:【to_date(NULL,'yyyy-MM-dd HH:mi:ss')】
  41. 共【68】列;给第【41】列,类型为:【DATE】的:【ORGCODE_CHGDATE】赋值内容为:【to_date('2010-03-12','yyyy-mm-dd HH24:mi:ss')】
  42. 共【68】列;给第【42】列,类型为:【DATE】的:【ORGCODE_REPEALDATE】赋值内容为:【to_date(NULL,'yyyy-MM-dd HH:mi:ss')】
  43. 共【68】列;给第【43】列,类型为:【DATE】的:【QS_UPD_DATE】赋值内容为:【to_date(NULL,'yyyy-MM-dd HH:mi:ss')】
  44. 共【68】列;给第【44】列,类型为:【VARCHAR2】的:【BD_RESULT】赋值内容为:【NULL
  45. 共【68】列;给第【45】列,类型为:【VARCHAR2】的:【QYK_ID】赋值内容为:【NULL
  46. 共【68】列;给第【46】列,类型为:【DATE】的:【UPD_TIME】赋值内容为:【to_date(NULL,'yyyy-MM-dd HH:mi:ss')】
  47. 共【68】列;给第【47】列,类型为:【VARCHAR2】的:【TRIM_CORP_NAME】赋值内容为:【NULL
  48. 共【68】列;给第【48】列,类型为:【VARCHAR2】的:【FUNDS_CODE】赋值内容为:【NULL
  49. 共【68】列;给第【49】列,类型为:【DATE】的:【FUNDS_OPEN_DATE】赋值内容为:【to_date(NULL,'yyyy-MM-dd HH:mi:ss')】
  50. 共【68】列;给第【50】列,类型为:【DATE】的:【FUNDS_REPEAL_DATE】赋值内容为:【to_date(NULL,'yyyy-MM-dd HH:mi:ss')】
  51. 共【68】列;给第【51】列,类型为:【DATE】的:【FUNDS_UPD_DATE】赋值内容为:【to_date(NULL,'yyyy-MM-dd HH:mi:ss')】
  52. 共【68】列;给第【52】列,类型为:【VARCHAR2】的:【FUNDSADD_CODE】赋值内容为:【NULL
  53. 共【68】列;给第【53】列,类型为:【DATE】的:【FUNDSADD_OPEN_DATE】赋值内容为:【to_date(NULL,'yyyy-MM-dd HH:mi:ss')】
  54. 共【68】列;给第【54】列,类型为:【DATE】的:【FUNDSADD_REPEAL_DATE】赋值内容为:【to_date(NULL,'yyyy-MM-dd HH:mi:ss')】
  55. 共【68】列;给第【55】列,类型为:【DATE】的:【FUNDSADD_UPD_DATE】赋值内容为:【to_date(NULL,'yyyy-MM-dd HH:mi:ss')】
  56. 共【68】列;给第【56】列,类型为:【VARCHAR2】的:【SOCIAL_SECURITY_CODE】赋值内容为:【NULL
  57. 共【68】列;给第【57】列,类型为:【DATE】的:【SOCIAL_SECURITY_OPEN_DATE】赋值内容为:【to_date(NULL,'yyyy-MM-dd HH:mi:ss')】
  58. 共【68】列;给第【58】列,类型为:【DATE】的:【SOCIAL_SECURITY_REPEAL_DATE】赋值内容为:【to_date(NULL,'yyyy-MM-dd HH:mi:ss')】
  59. 共【68】列;给第【59】列,类型为:【DATE】的:【SOCIAL_SECURITY_UPD_DATE】赋值内容为:【to_date(NULL,'yyyy-MM-dd HH:mi:ss')】
  60. 共【68】列;给第【60】列,类型为:【VARCHAR2】的:【LK_STATUS】赋值内容为:【NULL
  61. 共【68】列;给第【61】列,类型为:【VARCHAR2】的:【IS_ZMQ】赋值内容为:【NULL
  62. 共【68】列;给第【62】列,类型为:【DATE】的:【INSERT_TIME】赋值内容为:【to_date(NULL,'yyyy-MM-dd HH:mi:ss')】
  63. 共【68】列;给第【63】列,类型为:【VARCHAR2】的:【CORP_STATUS】赋值内容为:【NULL
  64. 共【68】列;给第【64】列,类型为:【VARCHAR2】的:【IS_GSL】赋值内容为:【NULL
  65. 共【68】列;给第【65】列,类型为:【VARCHAR2】的:【IS_RECENTLY_ZMQ】赋值内容为:【NULL
  66. 共【68】列;给第【66】列,类型为:【VARCHAR2】的:【IS_WEB_SEND】赋值内容为:【NULL
  67. 共【68】列;给第【67】列,类型为:【VARCHAR2】的:【UNI_SC_ID】赋值内容为:【913101177659553356
  68. 共【68】列;给第【68】列,类型为:【NUMBER】的:【REG_CAPITAL】赋值内容为:【600
  69. 执行的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','E5010','310227001057592','270000',to_date(NULL,'yyyy-MM-dd HH:mi:ss'),to_date('2016-03-16 13:33:00','310227765955335','13102275100',to_date('2004-08-13','纳税人名称,财务负责人姓名XXXXX',to_date('2015-01-22','上海市长宁区玉屏南路520弄15号',to_date('2010-03-12','913101177659553356',600)
  70. 共【68】列;给第【1】列,类型为:【VARCHAR2】的:【CORP_INFO_ID】赋值内容为:【20100816215830455984
  71. 共【68】列;给第【2】列,类型为:【VARCHAR2】的:【ORGAN_CODE】赋值内容为:【557439256
  72. 共【68】列;给第【3】列,类型为:【VARCHAR2】的:【ENTITY_ID】赋值内容为:【270000032010062100052
  73. 共【68】列;给第【4】列,类型为:【VARCHAR2】的:【CORP_NAME】赋值内容为:【上海翔晟包装材料有限公司】
  74. 共【68】列;给第【5】列,类型为:【VARCHAR2】的:【PERSON_NAME】赋值内容为:【张瑞勤】
  75. 共【68】列;给第【7】列,类型为:【VARCHAR2】的:【ADDRESS】赋值内容为:【上海市松江区泖港镇松金公路82382幢】
  76. 共【68】列;给第【8】列,类型为:【VARCHAR2】的:【TELEPHONE】赋值内容为:【15000428739
  77. 共【68】列;给第【11】列,类型为:【DATE】的:【ESTABLISH_DATE】赋值内容为:【to_date('2010-06-21 00:00:00',类型为:【VARCHAR2】的:【BUSINESS_SCOPE】赋值内容为:【包装材料、泡沫制品批发零售;塑料制品加工及销售】
  78. 共【68】列;给第【15】列,类型为:【VARCHAR2】的:【INDUSTRY_CODE】赋值内容为:【F5141
  79. 共【68】列;给第【18】列,类型为:【VARCHAR2】的:【REG_NO】赋值内容为:【310227001548657
  80. 共【68】列;给第【21】列,类型为:【DATE】的:【CHANGE_DATE】赋值内容为:【to_date('2016-03-16 13:30:00',类型为:【VARCHAR2】的:【TAXPAYERS_CODE】赋值内容为:【310227557439256
  81. 共【68】列;给第【31】列,类型为:【DATE】的:【TAX_REG_DATE】赋值内容为:【to_date(NULL,'yyyy-MM-dd HH:mi:ss')】
  82. 共【68】列;给第【33】列,类型为:【VARCHAR2】的:【TAX_CHGE_CONTENT】赋值内容为:【注册地址,经营范围】
  83. 共【68】列;给第【34】列,类型为:【DATE】的:【TAX_CHGE_DATE】赋值内容为:【to_date('2014-03-24',类型为:【VARCHAR2】的:【BUSINESS_ADDRESS】赋值内容为:【上海市松江区泖港镇松金公路7836号】
  84. 共【68】列;给第【39】列,类型为:【DATE】的:【ORGANCODE_DATE】赋值内容为:【to_date('2010-06-22','yyyy-mm-dd HH24:mi:ss')】
  85. 共【68】列;给第【41】列,类型为:【DATE】的:【ORGCODE_CHGDATE】赋值内容为:【to_date(NULL,'yyyy-MM-dd HH:mi:ss')】
  86. 共【68】列;给第【42】列,类型为:【VARCHAR2】的:【UNI_SC_ID】赋值内容为:【91310117557439256R
  87. 共【68】列;给第【68】列,类型为:【NUMBER】的:【REG_CAPITAL】赋值内容为:【100
  88. 执行的sql语句为:insert into CORP_INFO_TEST(CORP_INFO_ID,REG_CAPITAL) values('20100816215830455984','557439256','270000032010062100052','上海翔晟包装材料有限公司','张瑞勤','上海市松江区泖港镇松金公路8238号2幢','15000428739',to_date('2010-06-21 00:00:00','包装材料、泡沫制品批发零售;塑料制品加工及销售','F5141','310227001548657',to_date('2016-03-16 13:30:00','310227557439256','注册地址,经营范围',to_date('2014-03-24','上海市松江区泖港镇松金公路7836号',to_date('2010-06-22','91310117557439256R',100)


再来查看数据库是否插入成功:

两条数据已经成功插入到数据库中。

以上增量xml数据是包含有两个<corporation_info>节点的数据,如果xml中包含有多少个该节点,则数据库中就对应插入多少条数据。

进入实战操作:

需要导入的源数据:增量数据xml如下:

以下是导入数据的结果截图,一个程序将大量的结构化数据在短时间内导入,大大提高工作效率。

再看看数据库截图:

说明:"懒人"有懒人的方式。

猜你在找的XML相关文章