精华内容
下载资源
问答
  • 通常情况下,SQL Server里面的生成SQL脚本,只会包含数据库及表的字段结构,而不会包含表的数据,也就是SQL脚本里面只有Create database,Create table 这样的语句,没有insert into。 因为SQL Server并不包含这个...
    通常情况下,SQL Server里面的生成SQL脚本,只会包含数据库及表的字段结构,而不会包含表的数据,也就是SQL脚本里面只有Create database,Create table 这样的语句,没有insert into。
    因为SQL Server并不包含这个功能,只能靠第三方的代码了。
    以下存储过程可以实现:
    CREATE PROCEDURE dbo.UspOutputData
    @tablename sysname
    AS
    declare @column varchar(1000)
    declare @columndata varchar(1000)
    declare @sql varchar(4000)
    declare @xtype tinyint
    declare @name sysname
    declare @objectId int
    declare @objectname sysname
    declare @ident int
    set nocount on
    set @objectId=object_id(@tablename)
    if @objectId is null -- 判断对象是否存在
    begin
    print 'The object not exists'
    return
    end
    set @objectname=rtrim(object_name(@objectId))
    if @objectname is null or charindex(@objectname,@tablename)=0 --此判断不严密
    begin
    print 'object not in current database'
    return
    end
    if OBJECTPROPERTY(@objectId,'IsTable') < > 1 -- 判断对象是否是table
    begin
    print 'The object is not table'
    return
    end
    select @ident=status&0x80 from syscolumns where id=@objectid and status&0x80=0x80
    if @ident is not null
    print 'SET IDENTITY_INSERT '+@TableName+' ON'
    declare syscolumns_cursor cursor
    for select c.name,c.xtype from syscolumns c where c.id=@objectid order by c.colid
    open syscolumns_cursor
    set @column=''
    set @columndata=''
    fetch next from syscolumns_cursor into @name,@xtype
    while @@fetch_status < >-1
    begin
    if @@fetch_status < >-2
    begin
    if @xtype not in(189,34,35,99,98) --timestamp不需处理,image,text,ntext,sql_variant 暂时不处理
    begin
    set @column=@column+case when len(@column)=0 then'' else ','end+@name
    set @columndata=@columndata+case when len(@columndata)=0 then '' else ','','','
    end
    +case when @xtype in(167,175) then '''''''''+'+@name+'+''''''''' --varchar,char
    when @xtype in(231,239) then '''N''''''+'+@name+'+''''''''' --nvarchar,nchar
    when @xtype=61 then '''''''''+convert(char(23),'+@name+',121)+''''''''' --datetime
    when @xtype=58 then '''''''''+convert(char(16),'+@name+',120)+''''''''' --smalldatetime
    when @xtype=36 then '''''''''+convert(char(36),'+@name+')+''''''''' --uniqueidentifier
    else @name end
    end
    end
    fetch next from syscolumns_cursor into @name,@xtype
    end
    close syscolumns_cursor
    deallocate syscolumns_cursor
    set @sql='set nocount on select ''insert '+@tablename+'('+@column+') values(''as ''--'','+@columndata+','')'' from '+@tablename
    print '--'+@sql
    exec(@sql)
    if @ident is not null
    print 'SET IDENTITY_INSERT '+@TableName+' OFF'
    GO

    使用方法:
    [quote]exec UspOutputData 你的表名[/quote]选择【执行模式】为“以文本显示结果”,然后将运行后的结果存成.sql,加上用SQL Server生成的数据库脚本就可以了。
    另外可以利用第三方工具,导出数据可以用powerbuilder。在database painter里面,用SQL选出,或者直接打开表,点击生成的list datawindow,然后在菜单file->save rows as->选择SQL,那么生成的SQL语句就包括建表和insert数据的SQL了。
    展开全文
  • 通常情况下,SQL Server里面的生成SQL脚本,只会包含数据库及表的字段结构,而不会包含表的数据,也就是SQL脚本里面只有Create database,Create table 这样的语句,没有insert into。 因为SQL Server并不包含这个...
    通常情况下,SQL Server里面的生成SQL脚本,只会包含数据库及表的字段结构,而不会包含表的数据,也就是SQL脚本里面只有Create database,Create table 这样的语句,没有insert into。
    因为SQL Server并不包含这个功能,只能靠第三方的代码了。
    以下存储过程可以实现:



    CREATE PROCEDURE dbo.UspOutputData
    @tablename sysname
    AS
    declare @column varchar(1000)
    declare @columndata varchar(1000)
    declare @sql varchar(4000)
    declare @xtype tinyint
    declare @name sysname
    declare @objectId int
    declare @objectname sysname
    declare @ident int
    set nocount on
    set @objectId=object_id(@tablename)
    if @objectId is null -- 判断对象是否存在
    begin
    print 'The object not exists'
    return
    end
    set @objectname=rtrim(object_name(@objectId))
    if @objectname is null or charindex(@objectname,@tablename)=0 --此判断不严密
    begin
    print 'object not in current database'
    return
    end
    if OBJECTPROPERTY(@objectId,'IsTable') < > 1 -- 判断对象是否是table
    begin
    print 'The object is not table'
    return
    end
    select @ident=status&0x80 from syscolumns where id=@objectid and status&0x80=0x80
    if @ident is not null
    print 'SET IDENTITY_INSERT '+@TableName+' ON'
    declare syscolumns_cursor cursor
    for select c.name,c.xtype from syscolumns c where c.id=@objectid order by c.colid
    open syscolumns_cursor
    set @column=''
    set @columndata=''
    fetch next from syscolumns_cursor into @name,@xtype
    while @@fetch_status < >-1
    begin
    if @@fetch_status < >-2
    begin
    if @xtype not in(189,34,35,99,98) --timestamp不需处理,image,text,ntext,sql_variant 暂时不处理
    begin
    set @column=@column+case when len(@column)=0 then'' else ','end+@name
    set @columndata=@columndata+case when len(@columndata)=0 then '' else ','','','
    end
    +case when @xtype in(167,175) then '''''''''+'+@name+'+''''''''' --varchar,char
    when @xtype in(231,239) then '''N''''''+'+@name+'+''''''''' --nvarchar,nchar
    when @xtype=61 then '''''''''+convert(char(23),'+@name+',121)+''''''''' --datetime
    when @xtype=58 then '''''''''+convert(char(16),'+@name+',120)+''''''''' --smalldatetime
    when @xtype=36 then '''''''''+convert(char(36),'+@name+')+''''''''' --uniqueidentifier
    else @name end
    end
    end
    fetch next from syscolumns_cursor into @name,@xtype
    end
    close syscolumns_cursor
    deallocate syscolumns_cursor
    set @sql='set nocount on select ''insert '+@tablename+'('+@column+') values(''as ''--'','+@columndata+','')'' from '+@tablename
    print '--'+@sql
    exec(@sql)
    if @ident is not null
    print 'SET IDENTITY_INSERT '+@TableName+' OFF'
    GO



    使用方法:
    exec UspOutputData 你的表名
    选择【执行模式】为“以文本显示结果”,然后将运行后的结果存成.sql,加上用SQL Server生成的数据库脚本就可以了。

    或者直接把执行结果复制出来保存到txt文件中,修改后缀名为sql.
    展开全文
  • 如何在java环境下执行sql脚本文件

    千次阅读 2008-06-22 17:18:00
    有时候,在实际应用中,我们导出生成一...那么如何在java环境中执行这个脚本文件来实现一些sql的操作呢? 一:首先,在jsp部份需要提供一个由用户定位到这个sql文件的窗口,可以通过来实现,具体的代码如下:数据文件

         有时候,在实际应用中,我们导出生成一个脚本文件,这个脚本文件的内容可能是一些简单的insert或update语句。那么如何在java环境中执行这个脚本文件来实现一些sql的操作呢?

         一:首先,在jsp部份需要提供一个由用户定位到这个sql文件的窗口,可以通过<input type="file"/>来实现,具体的代码如下:

    <tr>

    <td>数据文件</td>

    <td>

    <html:text property="DATA_FILE" size="40" readonly="true"/>

    <INPUT TYPE="file" NAME="impData" style="display:none" >

                  <input type="button" name="btnInput" value="浏 览" onClick="getFileName();" />

             </td>

         </tr>

         其中:

    function getFileName(){

              //这里用fireEvent()不行。

              //$("impData").fireEvent("onclick");

              $("impData").click();

              $("DATA_FILE").value = $("impData").value;

         }

         二:在把数据文件的目录值($("DATA_FILE").value)传到servlet端的过程中,因为有可能会涉及到中文的目录,这时要注意的是字符传递编码的问题,处理如下:

    在传到servlet前需要编码encodeURIComponent(encodeURIComponet()),如下:

         var data_file=encodeURIComponent(encodeURIComponent($("DATA_FILE").value));在servlet端到到的值需要解码java.net.URLDecoder.decode(request.getParameter(""),"UTF-8"),如下:

          String data_file =  java.net.URLDecoder.decode(request.getParameter("DATA_FILE"), "UTF-8");

         三:编码的问题解决后,在ejb端的主要任务就是在sqlplus的环境中执行这个脚本文件,如下:

             try {

                  Runtime rt = Runtime.getRuntime();

                  String sql = "sqlplus "+user_code+"/"+user_pwd + "@"+ orc_service + " @/""+ data_file+"/"";

                  rt.exec(sql);

             }catch (Exception e) {

                  e.printStackTrace();

             }

         其中,user_code,user_pwd和orc_service写在常量类里,类的代码如下:

         public final class Contants {

              public static final String USER_CODE = "eol";

              public static final String USER_PWD = "eol";

              public static final String ORC_SERVICE = "racdb";

    }

     

    讨论:

         以上的ejb的解决方案有个问题是:

         如果这个脚本文件里的sql语句有错误,用rt.exec(sql);这句方式并不会捕获到异常,而是像正确执行一样,没办法回滚。因为rt.exec(sql);句话是执行正常的,并没有出现异常,只是执行内部的sql语句的时候有错误发生。这种情况应该如何解决呢?

    展开全文
  • sqldebug 2.4

    2017-12-07 11:36:30
    视图和存储过程还可以查看创建SQL脚本。 强大的二次数据分析功能 对查询出来的数据进行二次分析,提供过滤,排序、查找、编辑、导出。特点:支持把字段置为null,显示每个字段的属性(完全和数据库数据类型对应),...
  • java开源包1

    千次下载 热门讨论 2013-06-28 09:14:34
    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...
  • java开源包12

    热门讨论 2013-06-28 10:14:45
    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...
  • Java资源包01

    2016-08-31 09:16:25
    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...
  • java开源包101

    2016-07-13 10:11:08
    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...
  • java开源包11

    热门讨论 2013-06-28 10:10:38
    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...
  • java开源包2

    热门讨论 2013-06-28 09:17:39
    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...
  • java开源包3

    热门讨论 2013-06-28 09:20:52
    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...
  • java开源包6

    热门讨论 2013-06-28 09:48:32
    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...
  • java开源包5

    热门讨论 2013-06-28 09:38:46
    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...
  • java开源包10

    热门讨论 2013-06-28 10:06:40
    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...
  • java开源包4

    热门讨论 2013-06-28 09:26:54
    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...
  • java开源包8

    热门讨论 2013-06-28 09:55:26
    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...
  • java开源包9

    热门讨论 2013-06-28 09:58:55
    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...
  • java开源包7

    热门讨论 2013-06-28 09:52:16
    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
    百度云盘分享 ... Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。  部分源代码摘录:  ftpClient = new FtpClient(); //实例化FtpClient对象  String serverAddr=jtfServer.getText();...
  • Java实现的FTP连接与数据浏览程序 1个目标文件 摘要:Java源码,网络相关,FTP Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。 部分源代码摘录: ftpClient = new FtpClient(); //实例化FtpClient对象 ...
  • sqldebug--通用数据库GUI

    2008-10-15 10:01:17
    视图和存储过程还可以查看创建SQL脚本。 强大的二次数据分析功能 对查询出来的数据进行二次分析,提供过滤,排序、查找、编辑、导出。特点:支持把字段置为null,显示每个字段的属性(完全和数据库数据类型对应),...
  • 21天学会SQL

    2013-04-10 14:46:04
    最后一篇是综合案例篇,分别使用.NET和Java语言实现了与SQL Server 2008的连接,并完成了图书管理系统和在线订餐系统。 第一篇 SQL Server 2008基础篇 第1章 学习数据库的准备 ( 教学视频:58分钟) 15 1.1 认识...
  • 5、预输出创建、更新SQL脚本。 6、提供数据导入、导出功能。支持从Excel导入导出的双向编辑操作。 7、对开发语言的支持。开放的数据库物理结构文件格式、并提供外部调用源程序, 包含C#、Delphi、JAVA三个版本。 8、...
  • 5、预输出创建、更新SQL脚本。 6、提供数据导入、导出功能。支持从Excel导入导出的双向编辑操作。 7、对开发语言的支持。开放的数据库物理结构文件格式、并提供外部调用源程序,包含C#、Delphi、JAVA三个...
  • 第五篇:java+ssh+SQL+bootstrap网上订餐系统全套源码,包括源代码和数据库SQL文件,可用于代码参考和计算机专业毕业设计 第六篇:Oracle数据库的脚本,直接导入到MyEclipse中就可以运行! 第七篇:网上订餐使用了...
  • java调用oracle的sqlldr[转]

    千次阅读 2007-05-19 11:25:00
    转载地址:http://blog.csdn.net/meconsea/archive/2005/04/13/346181.aspx oracle大数据量的导入和导出在oracle中批量数据的导出是借助...大量数据的导出部分如下:/*************************** * sql脚本部分 dem

     转载地址:http://blog.csdn.net/meconsea/archive/2005/04/13/346181.aspx

     oracle大数据量的导入和导出

    在oracle中批量数据的导出是借助sqlplus的spool来实现的。批量数据的导入是通过sqlload来实现的。
    大量数据的导出部分如下:
    /***************************
     *  sql脚本部分 demo.sql begin
     **************************/
    /**************************
     * @author meconsea
     * @date 20050413
     * @msn meconsea@hotmail.com
     * @Email meconsea@163.com
     **************************/

    //##--markup html:html格式输出,缺省为off

    //##--autocommit:自动提交insert、update、delete带来的记录改变,缺省为off

    //##--define:识别命令中的变量前缀符,缺省为on,也就是'&',碰到变量前缀符,后面的字符串作为变量处理.

    set colsep' ';                       //##--域输出分隔符

    set echo off;                            //##--显示start启动的脚本中的每个sql命令,缺省为on

    set feedback off;                        //##--回显本次sql命令处理的记录条数,缺省为on      

    set heading off;                         //##--输出域标题,缺省为on

    set pagesize 0;                          //##--输出每页行数,缺省为24,为了避免分页,可设定为0。

    set linesize 80;                         //##--输出一行字符个数,缺省为80

    set numwidth 12;                         //##--输出number类型域长度,缺省为10

    set termout off;                         //##--显示脚本中的命令的执行结果,缺省为on

    set timing off;      //##--显示每条sql命令的耗时,缺省为off

    set trimout on;                          //##--去除标准输出每行的拖尾空格,缺省为off

    set trimspool on;                        //##--去除重定向(spool)输出每行的拖尾空格,缺省为off

    spool C:/data/dmczry.txt;               

    select trim(czry_dm),trim(swjg_dm),trim(czry_mc) from dm_czry;

    spool off;

    EOF

    /***********************
     * demo.sql end
     ***********************/
     
    在数据导入的时候采用sqlload来调用,在该部分调用的时候用java来调用sqlload。
    sqlload包括ctl控制文件。例如:
    /*********************
     * meconsea  ctl
     ********************/
     load data
     infile 'C:/data/dmczry.txt'
     replace into table DM_CZRY
     fields terminated by X'09'
     (CZRY_DM,SWJG_DM,CZRY_MC)
     
    /********************
     * end
     * 注释:里面的replace可以改为append
     *******************/
     
     java程序如下:
    在java程序用可以根据需求写成一个bat文件。 把数据库的配置和文件的路径写到一个properties
    文件。
    /*************************
     * ide properties
     ************************/
    Dserver=test/test@SJJZ
    sqlldr=D://oracle//ora92//bin//SQLLDR.EXE

    ctldmczry=C://data//ctl//dmczry.ctl
    txtdmczry=C://data//dmczry.txt

    写个PropertyBean.java来操作properties文件。(偷懒不写了!)
    用DmCzry.java来把记录导入db中。部分代码如下:

    /****************************
     * 代码摘要
     *
     ***************************/
     ..............
     sqlldr = pb.getSqlldr();
     txt = pb.getTxtdmczry();
     ctl = pb.getCtldmczry();
     Dserver= pb.getDserver();
     
     
     Process processCmd = Runtime.getRuntime().exec(sqlldr+" "+cmdStr);
     .............

    展开全文
  • 5、预输出创建、更新SQL脚本。 6、提供数据导入、导出功能。支持从Excel导入导出的双向编辑操作。 7、对开发语言的支持。开放的数据库物理结构文件格式、并提供外部调用源程序, 包含C#、Delphi、JAVA...
  • 5、预输出创建、更新SQL脚本。 6、提供数据导入、导出功能。支持从Excel导入导出的双向编辑操作。 7、对开发语言的支持。开放的数据库物理结构文件格式、并提供外部调用源程序, 包含C#、Delphi、JAVA...

空空如也

空空如也

1 2 3 4 5
收藏数 81
精华内容 32
关键字:

java实现sql脚本导出

java 订阅