小弟出识oracle,
一:现在需要把通过手工添加进如数据库的数据导出出来生车.sql脚本。(注意不是建库的脚本)
二:清空库中的数据后,执行前一步的sql脚本用后 数据库中的数据回到清空前。想要完成以上的操作现问题有2:
请介绍个简单的导出工具,如何使用?工具导出的脚本是否需要手工编辑才可用?
  小弟冰天雪地跪求详解。谢谢各位达人

解决方案 »

  1.   

    我知道SQL SERVER能通过写存储过来来完成,不知道ORACLE怎么搞.
    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 cursorfor 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' GOexec UspOutputData 你的表名
      

  2.   

    方法一
    1、软件 PL/SQL Developer 7.1.5
    可以到华军下,http://www.baidu.com/s?ct=0&ie=gb2312&bs=sqlplus+%CF%C2%D4%D8&sr=&z=&cl=3&f=8&wd=pl%2Fsql+developer怕有病毒就自己到华军或者天空什么的搜索  PL/SQL Developer2、安装,相当于傻瓜式安装,简单3、使用,直接输入登陆用户、密码、数据库连接名4、进入后点  FILE ----  NEW ---- SQL WINDOWS
    输入 select * from 表名
    直接右键点击查询出的数据,点COPY TO EXCEL
    保存EXCEL,
    清空你的数据
    然后将EXCEL的数据重新导入,TOOLS ---- ODBC IMPORTER  自己建个数据源,选择刚才保存的EXCEL就可以导入了方法二、
    如果数据过多,可以自己新建个表,点软件左侧TABLES,选择你的表,右键选择第二个(叫什么忘了,COPY什么的,就是复制表结构,相当于新建个表,输入新的表名),如果不行就新建个表吧,然后
    FILE ----- NEW -----SQL WINDOWS
    输入  insert into 新建表
          select * from 原表
    请空原表数据
    然后insert into 原表
    select * from 新建表新建表如果没用,可以删除了
      

  3.   

    我也遇到了这个问题!
    使用软件~~ 暂时还没考虑到这个
    不过oracle自带的imp/exp指令不是很好使嘛 
    请高人指点
    楼主导出的也没必要非得是.sql文件吧
      

  4.   

    plsql直接搞定啊
    安装plsql后
    选择一个表---右键---导出数据----选择sql插入---选择输出文件就OK了。
    导入方法基本相同
      

  5.   

    PL/SQL直接可以导出SQL语句的
    到时候执行下插入就好了