Purpose:
========
The purpose of this article is to explain how you can transfer table
definitions from one database to another database by generating script
files.
How to Generate 'CREATE TABLE' Scripts from Existing Tables:
============================================================
If basic tables, that is, tables with no partitions, constraints, indexes,
etc. are sufficient for your purposes, then you can use the script listed
at the end of this article.
If you need detailed CREATE TABLE SQL statements, then you can follow
this example:
exp user_name/password file=table_name.dmp rows=n tables=\('table_name'\);
(Use brackets to escape the backslash because of shell interpretation.)
imp user_name/password file= table_name.dmp indexfile=table_name.log
on UNIX:
sed 's/REM //' table_name.log >table_name.sql
on another platforms:
open file table_name.log in any text editor and replace string 'REM ' by ''
(empty string).
save as table_name.sql
Check the file table_name.sql for the script that you need.
============ Script for basic CREATE TABLE SQL statement ================
spool table.lst
set serveroutput on size 1000000
declare
starting boolean :=true;
r_owner varchar2(30) := '&1';
r_table_name varchar2(30) := '&2';
begin
dbms_output.put_line('create table '||r_owner||'.'||r_table_name||'(');
for r in (select column_name, data_type, data_length, data_precision, data_scale, data_default, nullable
from all_tab_columns
where table_name = upper(r_table_name)
and owner=upper(r_owner)
order by column_id)
loop
if starting then
starting:=false;
else
dbms_output.put_line(',');
end if;
if r.data_type='NUMBER' then
if r.data_scale is null then
dbms_output.put(r.column_name||' NUMBER('||r.data_precision||')');
else
dbms_output.put(r.column_name||' NUMBER('||r.data_precision||','||r.data_scale||')');
end if;
else if r.data_type = 'DATE' then
dbms_output.put_line(r.column_name||' DATE');
else if instr(r.data_type, 'CHAR') >0 then
dbms_output.put(r.column_name||' '||r.data_type||'('||r.data_length||')');
else
dbms_output.put(r.column_name||' '||r.data_type);
end if;
end if;
end if;
if r.data_default is not null then
dbms_output.put(' DEFAULT '||r.data_default);
end if;
if r.nullable = 'N' then
dbms_output.put(' NOT NULL ');
end if;
end loop;
dbms_output.put_line(' ); ');
end;
/
spool off
生成创建table 的sql sed ‘s/REM //‘
jnrjian2024-04-21 9:30
相关推荐
q***071422 分钟前
Spring Boot 从 2.7.x 升级到 3.3注意事项秋天之落叶44 分钟前
使用ADO将excel表内容加载到mssql表中的长度问题毕设十刻1 小时前
基于Vue的售票系统开发3g480(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末q***31891 小时前
如何查询SQL Server数据库服务器的IP地址Wang's Blog1 小时前
MySQL: 数据库读写分离与负载均衡的实现方式及深度分析beijingliushao1 小时前
93-MongoDB-LinuxNavicat中国2 小时前
Navicat 高频问题速解:PostgreSQL / MySQL / SQL Server / MongoDB / 达梦咖啡の猫2 小时前
Python中的输出函数零基础的修炼2 小时前
MySQL---C/C++链接