问一个问题.
 在数据库中,查询一张表有10行数据,然后我想把这个表导出到一个文件里!!!(oracle库)
 然后,再把这个文件导入到sql server 库中的`一张新建表中. 请问要如何操作呢?
相反 在数据库中,查询一张表有10行数据,然后我想把这个表导出到一个文件里!!!(sql server 库)
 然后,再把这个文件导入到oracle 库中的`一张新建表中. 请问要如何操作呢?

解决方案 »

  1.   

    Oracle --> SQL Server使用 utl_file 包,可以将数据写到文件里,然后通过 SQL Server 的导入工具,将文本文件的数据导入到 SQL Server 中SQL Server --> Oracle
    可以使用 bcp 命令将数据导成文本
    然后 Oracle 使用 sql loader 将文本文件导入导数据库
      

  2.   

    方法很多啊.ORACLE用工具导出CSV格式的,再导入ORACLE 
      

  3.   

    第一步、oracle 导出文件
    先建立目录,给赋予读写权限。create or replace directory D_OUTPUT as 'd:/export_data/';  
    grant read,write on directory D_OUTPUT to som;  
    GRANT EXECUTE ON utl_file TO som;修改参数utl_file_dir,此参数为静态参数,需重启数据库。alter system set utl_file_dir='d:/export_data/' scope=spfile;shutdown immediatestartup示例存储过程如下:create or replace procedure export_data_out_excel (
       pfile_name    varchar2,
       pexport_sql   varchar2
    )
    /**
    使用utl_file将需要导出的数据写入到文本文件
    pfile_name:输出文件名exp.txt。
    pexport_sql:执行的sql语句,select id||chr(9),name||chr(9) from tablename,chr(9)是TAB字符,以保证数据输出到excel能自动换到下一列。
    **/
    as
       type som_content_record_type is record (
          id     varchar2 (25),
          name     varchar2 (33),
          re    varchar2 (109),
          opttime   varchar2 (50)
       );   som_content_rec   som_content_record_type;
       err_num           number;
       err_msg           varchar2 (2000);   type cur_som_content is ref cursor;   c_som_content     cur_som_content;
       l_file            utl_file.file_type;
    begin
       l_file :=
              utl_file.fopen ('d:/export_data/', pfile_name || '.txt', 'w');
       utl_file.put_line
          (l_file,
           'id name re opttime'
          );
       open c_som_content for pexport_sql;   loop
          fetch c_som_content
           into som_content_rec.id, som_content_rec.name,
                som_content_rec.re, som_content_rec.opttime;      exit when c_som_content%notfound;
          utl_file.put (l_file, som_content_rec.id);
          utl_file.put (l_file, som_content_rec.name);
          utl_file.put (l_file, som_content_rec.re);
          utl_file.put_line (l_file, som_content_rec.opttime);
       end loop;   close c_som_content;   utl_file.fflush (l_file);
       utl_file.fclose (l_file);
      
    exception
       when others
       then
          if utl_file.is_open (l_file)
          then
             utl_file.fclose (l_file);
             err_num := sqlcode;
             err_msg := substr (sqlerrm, 1, 2000);         insert into oracle_error_log
                         (error_code, error_msg, date_time, error_resource
                         )
                  values (err_num, err_msg, sysdate, 'export_data_out_txt'
                         );         commit;
          end if;
    end;
    第二步、使用bcp将文本文件导入到sql server
    bcp "[Test].[dbo].[w_PlayerConnGameInfo_2008_2]" in "d:\export_data\exp.txt"  -f "d:\export_data\PlayInfo.fmt" -S "192.168.1.129" -U "Admin" -P "Admin"
      

  4.   

    第一步、利用bcp从sql server导出数据到文本文件
    exec master..xp_cmdshell
    ''bcp "SELECT * FROM tablename" queryout "d:\export_data\test.txt" -T -c -C 65001''
    第二步、从文本文件导入到oracle
    LOAD DATA
    INFILE 'd:/export_data/test.txt’
    INTO TABLE tableName
    FIELDS TERMINATED BY ","(field1,field2,field3,field4)解释:infile 指数据源文件 这里我们省略了默认的 discardfile   result.dsc   badfile   result.bad   
    into   table   tableName 默认是INSERT,也可以 APPEND into   table   tableName 为追加方式,或REPLACE  注意:1、insert,为缺省方式,在数据装载开始时要求表为空     
    2、append,在表中追加新记录     
    3、replace,删除旧记录,替换成新装载的记录     
    4、truncate,同上      
      

  5.   

    比较麻烦,但是方法比较多,
    1、采用中间文件转换的话就要考虑文件大小的限制
    oracle→中间文件(txt、xls……)→SQL SERVER
    2、可以在oracle中建立透明网关,直接与SQL SERVER连接
      

  6.   

    sqlserver 自带的有一个工具  dts方便的很