问题描述:
1。想要导出用户CAI下的所有表结构到sql文件
2。网上搜索的解决方案如下:
需要登陆oralce用户:sqlplus用户名/密码@实例名
SQL>setserveroutputon
SQL>setlong999999
SQL>setfeedbackoff
SQL>spooltemp.sql
SQL>SELECTDBMS_METADATA.GET_DDL('TABLE',table_name)FROMUSER_TABLES;
SQL>spooloff
这样就可以将表结构导出到temp.sql文件了。
3。我登录的CAI用户,运行这些SQL,得到如下信息:
SQL>selectDBMS_METADATA.GET_DDL("TABLE",table_name)FROMUSER_TABLES;
selectDBMS_METADATA.GET_DDL("TABLE",table_name)FROMUSER_TABLES
*
ERRORatline1:
ORA-00904:"TABLE":invalididentifier
SQL>setserveroutputon--打开DBMS_OUTPUT输出
SQL>setlong999999--设置最大可返回的lob类型数据的大小
SQL>setfeedbackoff--关闭执行查询时的反馈信息(查询影响的行数)
SQL>spooltemp.sql--将查询结果保存到temp.sql文件
SQL>SELECTDBMS_METADATA.GET_DDL('TABLE',table_name)FROMUSER_TABLES;--通过dbms_metadata.get_ddl函数获取用户表的定义
SQL>spooloff--关闭保存
二.如何用sql语句,把oracle中的数据导到sqlserver
1、在UNIX下运行如下角本,也可以在数据库中手工执行
---------------------
sqlplus–suser/passwd<
setcolsep|;
setechooff;
setfeedbackoff;
setheadingoff;
setpagesize0;
setlinesize1000;
setnumwidth12;
settermoutoff;
settrimouton;
settrimspoolon;
spool存储文件名;
select*from要导出的表名;
spooloff;
exit
2、现在,ORACLE中某一表的内容就已经导入到上述提到的“存储文件名”文件中了;
3、由于文件中的列分隔符设定为“|”,需要使用EXECL把开该文件,将列分隔附替换成“TAB”,并使用TRIM()函数去掉列中的空格
4、在SQLSERVER中建立一个与ORACLE中结构相同的表。
5、使用SQLSERVER自带的BCP命令导入数据。
bcp导入表名in导入文件名-U用户名-P口令-c