oracle导出表结构到sql文件

来源:互联网 发布:广告字设计软件 编辑:程序博客网 时间:2024/06/05 05:47
问题描述:
1。想要导出用户CAI下的所有表结构到sql文件
2。网上搜索的解决方案如下:
     需要登陆oralce用户: sqlplus 用户名/密码@实例名

     SQL> set serveroutput on
     SQL> set long 999999
     SQL> set feedback off
     SQL> spool temp.sql
     SQL> SELECT DBMS_METADATA.GET_DDL('TABLE',table_name)  FROM USER_TABLES;
     SQL> spool off

    这样就可以将表结构导出到temp.sql文件了。 

3。我登录的CAI用户,运行这些SQL,得到如下信息:
     SQL> select DBMS_METADATA.GET_DDL("TABLE",table_name) FROM USER_TABLES;
     select DBMS_METADATA.GET_DDL("TABLE",table_name) FROM USER_TABLES
                             *
     ERROR at line 1:

     ORA-00904: "TABLE": invalid identifier


SQL> set serveroutput on  -- 打开 DBMS_OUTPUT 输出
  SQL> set long 999999 -- 设置最大可返回的 lob 类型数据的大小
  SQL> set feedback off -- 关闭执行查询时的反馈信息(查询影响的行数)
  SQL> spool temp.sql -- 将查询结果保存到 temp.sql 文件
  SQL> SELECT DBMS_METADATA.GET_DDL('TABLE',table_name) FROM USER_TABLES; -- 通过 dbms_metadata.get_ddl 函数获取用户表的定义
  SQL> spool off  -- 关闭保存



二.如何用sql语句,把oracle中的数据导到sqlserver

1、在UNIX下运行如下角本,也可以在数据库中手工执行
---------------------
sqlplus –s user/passwd << EOF

set colsep |;
set echo off;
set feedback off;
set heading off;
set pagesize 0;
set linesize 1000;
set numwidth 12;
set termout off;
set trimout on;
set trimspool on;

spool 存储文件名;
select * from 要导出的表名;
spool off;
exit


2、现在,ORACLE中某一表的内容就已经导入到上述提到的“存储文件名”文件中了;

3、由于文件中的列分隔符设定为“|”,需要使用EXECL把开该文件,将列分隔附替换成“TAB”,并使用TRIM()函数去掉列中的空格

4、在SQL SERVER中建立一个与ORACLE中结构相同的表。

5、使用SQL SERVER自带的BCP命令导入数据。
bcp 导入表名 in 导入文件名 -U用户名 -P口令 -c

原创粉丝点击