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
相关推荐
山岚的运维笔记20 分钟前
SQL Server笔记 -- 第20章:TRY/CATCHGain_chance22 分钟前
33-学习笔记尚硅谷数仓搭建-DWS层交易域用户粒度订单表分析及设计代码未来之窗软件服务1 小时前
计算机等级考试—高频英语词汇—东方仙盟练气期lekami_兰1 小时前
MySQL 长事务:藏在业务里的性能 “隐形杀手”JQLvopkk1 小时前
C# 轻量级工业温湿度监控系统(含数据库与源码)devmoon2 小时前
在 Polkadot Runtime 中添加多个 Pallet 实例实战指南认真的薛薛3 小时前
数据库-sql语句爱学英语的程序员3 小时前
面试官:你了解过哪些数据库?·云扬·4 小时前
MySQL Redo Log落盘机制深度解析用户982863025684 小时前
pg内核实现细节