GVKun编程网logo

使用java生成备份sqlserver数据表的insert语句

12

在本文中,我们将为您详细介绍使用java生成备份sqlserver数据表的insert语句的相关知识,此外,我们还会提供一些关于ASP备份SQLServer数据库改进版、bat脚本备份SQLServe

在本文中,我们将为您详细介绍使用java生成备份sqlserver数据表的insert语句的相关知识,此外,我们还会提供一些关于ASP备份SQL Server数据库改进版、bat脚本备份SQL Server 数据库 - cmd命令备份SQL Server 数据库、SQL SERVER 向表中插入多行数据的insert语句、sql server2005数据库 导出insert语句的有用信息。

本文目录一览:

使用java生成备份sqlserver数据表的insert语句

使用java生成备份sqlserver数据表的insert语句

针对sqlserver数据表的备份工具很多,有时候条件限制需要我们自己生成insert语句,以便后期直接执行这些插入语句。下面提供了一个简单的思路,针对mysql或oracle有兴趣的以后可以试着修改。

public class GenInsertSql {
    private static Connection conn =null;
    private static Statement sm=null;
    private static String schema="dbo";//模式名
    private static String select="SELECT * FROM";//查询sql(针对一个表的时候,可以将*换成相应的列名)
    private static String where="WHERE 1=1 ";//where子句(慎用,最好针对一个表的时候用,注意修改createSQL方法)
    private static String insert="INSERT INTO";//插入sql
    private static String values="VALUES";//values关键字
    private static List <String> insertList=new ArrayList <String>();//全局insertsql文件的数据
    //存储路径
    private static String sqlfilePath ="D:/platform/new/backinsertsql/";//绝对路径,还未到最后一层
    private static String xmname = "xxx";// 哪个项目
    private static Boolean isOneFile = false;     //是否写到一个文件中取,如果为true,将写到filePath中,否则写到singleFilePath+表名中
    private static String filePath = sqlfilePath+xmname+"/1.txt";  
    private static String singleFilePath = sqlfilePath+xmname;
    //备份哪些表
    private static String [] table={"BA_CK_KCPD","SA_RY_GROUP"};//table数组 ,后期可以修改成list
    // 数据库连
    private static final String URL = "jdbc:jtds:sqlserver://11.11.11.11:1433;databaseName=xxx";
    private static final String NAME = "sa";
    private static final String PASS = "111111";
    private static final String DRIVER = "net.sourceforge.jtds.jdbc.Driver";
    
    /**
    * 导出数据库表
    * @param args
    * @throws SQLException
    */
    //所有sql写到一个文件中
    private static void createFile() {
          File file= new File( filePath );
            if (!file.exists()){
              try {
                 file.createNewFile();
              } catch (IOException e) {
                 System. out .println( " 创建文件名失败!! " );
                  e.printStackTrace();
              }
            }
            FileWriter fw= null ;
            BufferedWriter bw= null ;
            try {
              fw = new FileWriter(file);
              bw = new BufferedWriter(fw);
              if ( insertList .size()>0){
                for ( int i=0;i< insertList .size();i++){
                  bw.append( insertList .get(i));
                  bw.append( "\n" );
                  }
              }
            } catch (IOException e) {
                e.printStackTrace();
              } finally {
                try {
                  bw.close();
                  fw.close();
                } catch (IOException e) {
                  e.printStackTrace();
              }
            }
        }
    //sql分别写到对应表名的文件中
    private static void createFile(String filename,List <String> insertSqls) {
        File file= new File( singleFilePath+"/"+filename+".txt" );
          if (!file.exists()){
            try {
               file.createNewFile();
            } catch (IOException e) {
               System. out .println( " 创建文件名失败!! " );
                e.printStackTrace();
            }
          }
          FileWriter fw= null ;
          BufferedWriter bw= null ;
          try {
            fw = new FileWriter(file);
            bw = new BufferedWriter(fw);
            if ( insertSqls .size()>0){
              for ( int i=0;i< insertSqls .size();i++){
                bw.append( insertSqls .get(i));
                bw.append( "\n" );
                }
            }
            insertList.clear();
          } catch (IOException e) {
              e.printStackTrace();
            } finally {
              try {
                bw.close();
                fw.close();
              } catch (IOException e) {
                e.printStackTrace();
            }
          }
      }
    /**
    * 拼装查询语句
    * @return 返回select 集合
    */
    private static List<String> createSQL() {
        List<String> listSQL= new ArrayList<String>();
        for ( int i=0;i< table . length ;i++){
            StringBuffer sb= new StringBuffer();
            sb.append( select ).append( " " ).append( schema ).append( "." ).append( table [i])   ; // .append( " " ).append(where)
            listSQL.add(sb.toString());
        }
        return listSQL;
    }
    
    /**
    * 连接数据库创建statement 对象
    * @param driver
    * @param url
    * @param UserName
    * @param Password
    */
    public static void connectSQL(String driver,String url,String UserName,String Password){
        try {
          Class. forName (driver).newInstance();
          conn = DriverManager. getConnection (url, UserName, Password);
          sm=conn .createStatement();
        } catch (Exception e){
         e.printStackTrace();
        }
      }
    
    /**
    * 执行sql 并返回插入sql
    * @param conn
    * @param sm
    * @param listSQL
    * @throws SQLException
    */
    @SuppressWarnings({ "unused", "rawtypes" })
    public static void executeSQL(Connection conn,Statement sm,List listSQL)throws SQLException{
        List<String> insertSQL= new ArrayList<String>();
        ResultSet rs= null ;
        try {
          rs = getColumnNameAndColumeValue (sm, listSQL, rs);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            rs.close();
            sm.close();
            conn.close();
        }
      }
    
    /**
    * 获取列名和列值
    * @param sm
    * @param listSQL
    * @param rs
    * @return
    * @throws SQLException
    */
    @SuppressWarnings("rawtypes")
    private static ResultSet getColumnNameAndColumeValue(Statement sm,List listSQL, ResultSet rs) throws SQLException {
        for (int j = 0; j < listSQL.size(); j++) {
            String sql = String.valueOf(listSQL.get(j));
            rs = sm.executeQuery(sql);
            ResultSetMetaData rsmd = rs.getMetaData();
            int columnCount = rsmd.getColumnCount();
            while (rs.next()) {
                StringBuffer ColumnName = new StringBuffer();
                StringBuffer ColumnValue = new StringBuffer();
                for (int i = 1; i <= columnCount; i++) {
                    String value = rs.getString(i);
                    if (i == columnCount) {
                        ColumnName.append(rsmd.getColumnName(i));
                        if (Types.CHAR == rsmd.getColumnType(i) || Types.VARCHAR == rsmd.getColumnType(i)
                                || Types.LONGVARCHAR == rsmd.getColumnType(i)) {
                            if (value == null) {
                                ColumnValue.append("null");
                            } else {
                                ColumnValue.append("''").append(value).append("''");
                            }
                        } else if (Types.SMALLINT == rsmd.getColumnType(i) || Types.INTEGER == rsmd.getColumnType(i)
                                || Types.BIGINT == rsmd.getColumnType(i) || Types.FLOAT == rsmd.getColumnType(i)
                                || Types.DOUBLE == rsmd.getColumnType(i) || Types.NUMERIC == rsmd.getColumnType(i)
                                || Types.DECIMAL == rsmd.getColumnType(i)) {
                            if (value == null) {
                                ColumnValue.append("null");
                            } else {
                                ColumnValue.append(value);
                            }
                        } else if (Types.DATE == rsmd.getColumnType(i) || Types.TIME == rsmd.getColumnType(i)
                                || Types.TIMESTAMP == rsmd.getColumnType(i)) {
                            if (value == null) {
                                ColumnValue.append("null");
                            } else {
                            //    ColumnValue.append("timestamp''").append(value).append("''");  //对于mysql可能需要timestamp,未测试
                                ColumnValue.append("''").append(value).append("''");  //对于sqlserver来说去掉timestamp
                            }
                        } else {
                            if (value == null) {
                                ColumnValue.append("null");
                            } else {
                                ColumnValue.append(value);
                            }
                        }
                    } else {
                        ColumnName.append(rsmd.getColumnName(i) + ",");
                        if (Types.CHAR == rsmd.getColumnType(i) || Types.VARCHAR == rsmd.getColumnType(i)
                                || Types.LONGVARCHAR == rsmd.getColumnType(i)) {
                            if (value == null) {
                                ColumnValue.append("null,");
                            } else {
                                ColumnValue.append("''").append(value).append("'',");
                            }
                        } else if (Types.SMALLINT == rsmd.getColumnType(i) || Types.INTEGER == rsmd.getColumnType(i)
                                || Types.BIGINT == rsmd.getColumnType(i) || Types.FLOAT == rsmd.getColumnType(i)
                                || Types.DOUBLE == rsmd.getColumnType(i) || Types.NUMERIC == rsmd.getColumnType(i)
                                || Types.DECIMAL == rsmd.getColumnType(i)) {
                            if (value == null) {
                                ColumnValue.append("null,");
                            } else {
                                ColumnValue.append(value).append(",");
                            }
                        } else if (Types.DATE == rsmd.getColumnType(i) || Types.TIME == rsmd.getColumnType(i)
                                || Types.TIMESTAMP == rsmd.getColumnType(i)) {
                            if (value == null) {
                                ColumnValue.append("null,");
                            } else {
//                              ColumnValue.append("timestamp''").append(value).append("'',");  //对于mysql可能需要timestamp,未测试
                                ColumnValue.append("''").append(value).append("'',");  //对于sqlserver来说去掉timestamp
                            }
                        } else {
                            if (value == null) {
                                ColumnValue.append("null,");
                            } else {
                                ColumnValue.append(value).append(",");
                            }
                        }
                    }
                }
                insertSQL( ColumnName, ColumnValue,j,rs.isLast());//j表示当前正在处理的表的顺序
            }
        }
        return rs;
    }
    
    /**
    * 拼装insertsql 放到全局list 里面
    * @param ColumnName
    * @param ColumnValue
    */
    private static void insertSQL(StringBuffer ColumnName,StringBuffer ColumnValue,int order,Boolean isLast) {
        StringBuffer insertSQL= new StringBuffer();
        insertSQL.append( insert ).append( " " ).append( schema ).append( "." )
        .append( table [order]).append( " (" ).append(ColumnName.toString())
        .append( ") " ).append( values ).append( " (" ).append(ColumnValue.toString()).append( ");" );
        
        if(isOneFile){
            insertList .add(insertSQL.toString());
            if(order ==table.length -1 ) createFile();   //最后一个表完成时,创建文件
        }else {
            insertList .add(insertSQL.toString());
            if(isLast){
                createFile(table [order],insertList);
            }
        }
    }
    //入口
    public static void executeSelectSQLFile() throws Exception {
        List<String> listSQL= new ArrayList<String>();
        connectSQL ( DRIVER , URL , NAME ,PASS ); // 连接数据库
        listSQL= createSQL (); // 创建查询语句
        executeSQL ( conn , sm,listSQL); // 执行sql 并拼装
        
        System.out.println("^^^^^^^^^^^^^^^^^^^^^^创建完毕!");
    }

    public static void main(String[] args) throws Exception {
        executeSelectSQLFile();
    }

}

直接运行,即可生成txt文件,里面是insert语句。预览一下:

代码比较长,但逻辑还算清晰。原文作者已经不知道是谁了,在这里表示感谢!

ASP备份SQL Server数据库改进版

ASP备份SQL Server数据库改进版

复制代码 代码如下:

<form method="post" name="myform" action="?action=backupdatabase">
选择操作:<INPUT TYPE="radio" NAME="act" id="act_backup"value="backup"><label for=act_backup>备份</label>
<INPUT TYPE="radio" NAME="act" id="act_restore" value="restore"><label for=act_restore>恢复</label>
<br>数据库名:<INPUT TYPE="text" NAME="databasename" value="<%=request("databasename")%>">
<br>文件路径:<INPUT TYPE="text" NAME="bak_file" value="c:\$1.bak">(备份或恢复的文件路径)<br>
<input type="submit" value="确定" id=submit1 name=submit1>
</form>
<%
''SQL Server 数据库的备份与恢复!
if request("action")="backupdatabase" Then
dim sqlserver,sqlname,sqlpassword,sqlLoginTimeout,databasename,bak_file,act
sqlserver = "localhost"
sqlname = "sa"
sqlpassword ="password"
sqlLoginTimeout = 15
databasename = trim(request("databasename"))
bak_file = trim(request("bak_file"))
bak_file = replace(bak_file,"$1",databasename)
act = lcase(request("act"))
if databasename = "" then
response.write "input database name"
else
if act = "backup" then
Set srv=Server.CreateObject("SQLDMO.SQLServer")
srv.LoginTimeout = sqlLoginTimeout
srv.Connect sqlserver,sqlname, sqlpassword
Set bak = Server.CreateObject("SQLDMO.Backup")
bak.Database=databasename
bak.Devices=Files
bak.Action = 0
bak.Initialize = 1
''bak.Replace = True
bak.Files=bak_file
bak.SQLBackup srv
if err.number>0 then
response.write err.number&"<font color=red><br>"
response.write err.description&"</font>"
end if
Response.write "<font color=green>备份成功!</font>"
elseif act="restore" then
''恢复时要在没有使用数据库时进行!
Set srv=Server.CreateObject("SQLDMO.SQLServer")
srv.LoginTimeout = sqlLoginTimeout
srv.Connect sqlserver,sqlname, sqlpassword
Set rest=Server.CreateObject("SQLDMO.Restore")
rest.Action=0 '' full db restore
rest.Database=databasename
rest.Devices=Files
rest.Files=bak_file
rest.ReplaceDatabase=True ''Force restore over existing database
if err.number>0 then
response.write err.number&"<font color=red><br>"
response.write err.description&"</font>"
end if
rest.SQLRestore srv
Response.write "<font color=green>恢复成功!</font>"
else
Response.write "<font color=red>没有选择操作</font>"
end if
end if
end if
%>
您可能感兴趣的文章:
  • PHP的ASP防火墙
  • asp 在线备份与恢复sqlserver数据库的代码
  • sql server中批量插入与更新两种解决方案分享(asp.net)
  • SQL Server LocalDB 在 ASP.NET中的应用介绍
  • ASP 连接 SQL SERVER 2008的方法
  • ASP通过ODBC连接SQL Server 2008数据库的方法
  • ASP语言实现对SQL SERVER数据库的操作
  • ASP和SQL Server如何构建网页防火墙

bat脚本备份SQL Server 数据库 - cmd命令备份SQL Server 数据库

bat脚本备份SQL Server 数据库 - cmd命令备份SQL Server 数据库

bat脚本备份SQL Server 数据库 - cmd命令备份SQL Server 数据库

如何用命令或者脚本来备份 SQL Server 备份数据库。

 

实现方法

通过bat脚本或者cmd命令来执行sql脚本实现备份;

开始

一、新建一个sql脚本

mybackup.sql 脚本内容如下

BACKUP DATABASE [database_name]
TO DISK=''E:\DataBaseBAK\database_name.bak''

解释
database_name 需要备份的数据库名称;
E:\DataBaseBAK\database_name.bak 数据库备份位置;

二、新建一个bat文件

编辑打开,填入如下命令

sqlcmd -S 127.0.0.1 -U sa -P 123 -i E:\DataBaseBAK\mybackup.sql

解释
127.0.0.1 数据库服务器IP;

sa 数据库用户名

123 sa用户密码;

E:\DataBaseBAK\mybackup.sql mybackup.sql 脚本位置;

以上。

SQL SERVER 向表中插入多行数据的insert语句

SQL SERVER 向表中插入多行数据的insert语句

感兴趣的小伙伴,下面一起跟随小编 jb51.cc的小编两巴掌来看看吧!

下面把在sql吧里一位高手的解决方法,公布下。
供大家参考:

假设有个表有 学号、姓名、学校 这三列
然后向这个表中插入
040501 孙明 山东大学
040502 李浩 山东师范
040503 王刚 烟台大学
怎么插入这三行数据啊~~~~~~~
 

代码如下:

insert 表名 
select '040504','孙明','山东大学' union 
select '040502','李浩','山东师范' union 
select '040503','王刚','烟台大学'

sql server2005数据库 导出insert语句

sql server2005数据库 导出insert语句

同志们,如何将sql server2005数据库,表中数据导出insert语句,有什么好的工具推荐下,谢谢!

我们今天的关于使用java生成备份sqlserver数据表的insert语句的分享就到这里,谢谢您的阅读,如果想了解更多关于ASP备份SQL Server数据库改进版、bat脚本备份SQL Server 数据库 - cmd命令备份SQL Server 数据库、SQL SERVER 向表中插入多行数据的insert语句、sql server2005数据库 导出insert语句的相关信息,可以在本站进行搜索。

本文标签:

上一篇Docker三剑客之Docker Machine(docker三剑客介绍)

下一篇docker 容器常用几种网络模型(docker容器网络类型)