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