当前位置: 首页 > news >正文

代做宝网站wordpress美化编辑插件

代做宝网站,wordpress美化编辑插件,大气黑色女性时尚类网站织梦模板,有没有可以代理推广的平台需求 近来工作中遇到一个问题#xff0c;内网办公系统中的数据需要导出到外网中进行查询#xff0c;外网的数据库中还有一些表存储外网的数据#xff0c;因此无法使用全库备份恢复功能来满足需求。即只从内网数据库中导出若干表的内容至外网数据库的对应表。 其他解决方案…需求 近来工作中遇到一个问题内网办公系统中的数据需要导出到外网中进行查询外网的数据库中还有一些表存储外网的数据因此无法使用全库备份恢复功能来满足需求。即只从内网数据库中导出若干表的内容至外网数据库的对应表。 其他解决方案使用SQL Server自身的导出SQL语句的方法其实也可以但是涉及到几十个表一一手工导出工作量较大。 因此自己写了个函数将内网中的表数据导出根据数据生成insert into 语句然后使用批处理的方式导入到外网数据库中。 1.表结构的分析 生成insert语句时不得不面对的是引号的使用对于int等类型无需引号但是对于char、text等必须加上引号一个表动辄几十个字段人工用数组等方式记录字段的类型、名称再进行处理也比较耗费精力尤其是数据表的结构时常还在变化而且是另一个开发公司在维护何时变化也不得而知。这里通过分析建表语句完成了自动的字段类型的对应从而大大减轻了人工维护字段及其类型的工作量。 譬如建表语句如下在SQL Server企业管理器中选中表CtrlC即可得到这里存放一个文件中 CREATE TABLE [Import_BizDescrs] ([DescrId] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,[DescrType] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,[DescrAt] [datetime] NULL ,[Descr] [text] COLLATE Chinese_PRC_CI_AS NULL ,[DescrBy] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,[BizId] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,[SampId] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,[AssistTaskId] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,[CreatePerson] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,[CreateDate] [datetime] NULL ,[UpdatePerson] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,[UpdateDate] [datetime] NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO 从以上文字中做出如下处理即可获得表名、字段名、字段类型以及附带的是否需要引号。 public static void exportTableDataByCreateSQL(String createSQLFileName){ArrayList String fieldNames new ArrayListString();ArrayList String fieldtypes new ArrayListString();ArrayList Boolean needQuotationMark new ArrayListBoolean();String tableName ;String filePath C:\\importSQLs\\;String tmpString;try {BufferedReader reader new BufferedReader(new FileReader(createSQLFileName));String line reader.readLine();//从第一行获取表名 tableName line.substring(line.indexOf([)1,line.indexOf(]));;System.out.println(tableName) ;//后面获取其他信息while ((line reader.readLine()) ! null) {if(line.startsWith())){break;}tmpString line.substring(line.indexOf([)1,line.indexOf(]));fieldNames.add(tmpString);line line.substring(line.indexOf(])1);tmpString line.substring(line.indexOf([)1,line.indexOf(]));fieldtypes.add(tmpString); if(tmpString.contains(char)||tmpString.contains(text)||tmpString.contains(datetime)){needQuotationMark.add(true);}else{needQuotationMark.add(false);}}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} } 2.备份表 获取到完整的字段、字段属性后就可以开始生成SQL文件了对于值为null的数据略去相应的插入语句同时由于是全表全量导入开始时增加了delete from tableName的语句 全部代码如下 public static void exportTableDataByCreateSQL(String createSQLFileName){ArrayList String fieldNames new ArrayListString();ArrayList String fieldtypes new ArrayListString();ArrayList Boolean needQuotationMark new ArrayListBoolean();String tableName ;String filePath C:\\importSQLs\\;String tmpString;try {BufferedReader reader new BufferedReader(new FileReader(createSQLFileName)); String line reader.readLine();//从第一行获取表名 tableName line.substring(line.indexOf([)1,line.indexOf(]));;//后面获取其他信息while ((line reader.readLine()) ! null) {if(line.startsWith())){break;}tmpString line.substring(line.indexOf([)1,line.indexOf(]));fieldNames.add(tmpString);line line.substring(line.indexOf(])1);tmpString line.substring(line.indexOf([)1,line.indexOf(]));fieldtypes.add(tmpString); if(tmpString.contains(char)||tmpString.contains(text)||tmpString.contains(datetime)){needQuotationMark.add(true);}else{needQuotationMark.add(false);}}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}//开始生成insert语句Connection conn;try {Class.forName(net.sourceforge.jtds.jdbc.Driver);conn DriverManager.getConnection(GlobalVar.ConnURL,GlobalVar.ConnUser,GlobalVar.ConnPWD);Statement stmt conn.createStatement();ResultSet rs stmt.executeQuery(SELECT * FROM tableName); FileWriter writer new FileWriter(filePath tableName.lims2, false);BufferedWriter bufferedWriter new BufferedWriter(writer); bufferedWriter.write(delete from tableName ;);bufferedWriter.newLine();while (rs.next()) {String FieldsString;String ValuesString;for(int i0; i needQuotationMark.size();i){tmpString rs.getString(fieldNames.get(i)); if(tmpString ! null){if(FieldsString.equals()){FieldsString fieldNames.get(i);ValuesString (needQuotationMark.get(i)?:) tmpString.trim() (needQuotationMark.get(i)?:);}else{FieldsString , fieldNames.get(i);ValuesString , (needQuotationMark.get(i)?:) tmpString.trim() (needQuotationMark.get(i)?:);}}}bufferedWriter.write(insert into tableName (FieldsString) values(ValuesString););bufferedWriter.newLine();}bufferedWriter.close();writer.close();rs.close();stmt.close();conn.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} } 调用以上函数时只需将保存建表语句的sql文件位置作为参数即可在本项目中生成的sql文件以.lims2结尾。 3.还原表 由于生成的表数据文件较多这里写了个批处理文件将导出的表数据文件和该批处理文件一起拷贝到外网服务器中运行批处理即完成了导入操作。以后准备写个上传的页面省去了远程桌面的麻烦。批处理文件如下 osql -S 127.0.0.1 -U 用户名 -P 密码 -d lims2 -i Import_table1.lims2 -o Rst_Import_table1.log osql -S 127.0.0.1 -U 用户名 -P 密码 -d lims2 -i import_table2.lims2 -o Rst_import_table2.log osql -S 127.0.0.1 -U 用户名 -P 密码 -d lims2 -i Import_table3.lims2 -o Rst_Import_table3.log osql -S 127.0.0.1 -U 用户名 -P 密码 -d lims2 -i import_table4.lims2 -o Rst_import_table4.log osql -S 127.0.0.1 -U 用户名 -P 密码 -d lims2 -i import_table5.lims2 -o Rst_import_table5.log ........ 结语 此方法适用于同步部分表而不是整库的情况尤其是两个数据库无法直接通信需要手工同步的场景。
http://www.w-s-a.com/news/543285/

相关文章:

  • 企业网站免费推广的方法.wordpress 爱情模板下载地址
  • 轻淘客 轻网站怎么做手机开发人员选项怎么打开
  • 天津做网站制作公司html网站 下载
  • 哪个网站的课件做的好crm客户管理系统全称
  • 网站建设工作室创业计划书seo是什么职位的简称
  • o2o平台网站开发什么是白帽seo
  • 免费建个人手机网站WordPress 简历库
  • 建网站 是否 数据库阳瘘的最佳治疗方法是什么
  • 知晓程序网站怎么做网站基础维护
  • 兼职做网站赚钱吗图片设计制作哪个软件好手机
  • 做手机旅游网站智慧校园登录入口
  • 莆田网站建设维护国外极简网站
  • 百度怎样收录网站缪斯设计集团
  • 网站建设在开封找谁做wordpress 数据转换
  • 旅游网站开发的流程江苏付费网络推广培训
  • 网站软文标题2018wordpress主题
  • 德清网站设计wordpress免登录发布接
  • 可以做游戏的网站有哪些客户关系管理系统的主要功能
  • 整人关不掉的网站怎么做广东省网站免备案表
  • 网站设计素材edu域名网站
  • 中山学校的网站建设wordpress文章图片显示不出
  • 兰溪城市建设规划网站网站联盟的基本流程
  • 免费推广网站注册入口小说阅读网站怎么建设
  • 新网站怎么做网络推广怎么做企业网站排名
  • jsp商业网站开发网站链接如何做二维码
  • 江苏高校品牌专业建设网站怎么制作网站搜索窗口
  • 北京app建设 网站开发公司织梦网站seo
  • 大学网站 作风建设专题汽车配件外贸出口公司
  • 东莞做网站系统购物网站建设精英
  • 建设vip网站相关视频网站营销建设公司