有人可以通過查詢獲取包含Oracle 7數據的創建表腳本嗎?由於這是Oracle 7,並且在一個非常老的Linux機器上,我不認爲蟾蜍會工作。我必須使用putty連接到服務器,然後從中啓動sqlplus。一切都是膩子窗口。請幫忙。感謝生成包含Oracle 7數據的表格腳本
回答
如何:
create table test(id number, data varchar2(100));
insert into test values (1, 'This isn''t the data you''re looking for');
應該在Oracle 7環境下運行,但它是未經檢驗的,因爲我還沒有在十年或更長時間訪問Oracle 7環境。
要找出當前存在的表的結構,您可以使用SQL * Plus describe命令。例如:
SQL> desc dual
Name Null Type
----- ---- -----------
DUMMY VARCHAR2(1)
哪個應該給你足夠的信息來在另一個環境中重新創建表本身。此外,您可以查詢[ALL | USER] _CONSTRAINTS,[ALL | USER] _CONS_COLUMNS,[ALL | USER] _INDEXES和[ALL | USER] _TRIGGERS以確定任何其他相關信息(假設這些視圖存在後兩個可能不存在)。
最後,您可以構建一個查詢或進程,提取數據並將其後臺處理或使用UTL_FILE將其以適合插入的格式寫入文件。
我有一個表已經存在於數據庫中,但現在我想將它移動到MS SQL。但作爲一個非常舊的Linux機器上運行的Oracle 7,我不能使用蟾蜍或SQL開發人員點擊它並說出口。我只是想知道是否有一種方法可以將一個腳本的所有數據都轉換爲一個文件,這樣我就可以將它導入到sql server中。就像當你右鍵點擊一張桌子並且用數據生成腳本一樣。 – user3731575
您可以嘗試導出您的Oracle 7數據庫並將其導入到您應該能夠創建遷移腳本的Oracle 10g XE數據庫。
看到這裏http://docs.oracle.com/cd/B14117_01/server.101/b10763/expimp.htm#sthref707
我有一個腳本年前寫的,它應該在Oracle 7.它不是一個簡單的查詢,它創建了一個包和一個工作表中,但它可以幫助
set feedback on
set verify off
prompt Vytvářím pomocné objekty...
create table XDummy(object_name Varchar2(30),
object_type Varchar2(13),rownm number(3),text varchar2(2000));
create or replace package SPINKYHO_OBJEKTY is
procedure P_Indexes(PIndexName in Varchar2,Dummy in Varchar2);
procedure P_Sequences(PSequenceName in Varchar2,Dummy in Varchar2);
procedure P_Sources(SrcName in Varchar2,SrcType in Varchar2);
procedure P_Tables(PTableName in Varchar2,Dummy in Varchar2);
procedure P_Views(PViewName in Varchar2,Dummy in Varchar2);
procedure P_Triggers(PTriggerName in Varchar2,Dummy in Varchar2);
end SPINKYHO_OBJEKTY;
/
create or replace package body SPINKYHO_OBJEKTY is
procedure Constraints(PTableName in Varchar2) is
cursor c_constraint is
select constraint_name,
decode(constraint_type,'C','CHECK','P','PRIMARY KEY',
'R','FOREIGN KEY','U','UNIQUE'),search_condition,
r_owner,r_constraint_name
from all_constraints
where table_name = PTableName and
constraint_name not like 'SYS%' and
owner = upper('&1');
cursor c_columns(POwner Varchar2,PConstraint Varchar2) is
select table_name,column_name from all_cons_columns
where owner = upper(POwner) and
constraint_name = PConstraint;
PConstr Varchar2(30);
PTyp Varchar2(11);
PCond Varchar2(2000);
PRConstr Varchar2(30);
PROwn Varchar2(30);
PText Varchar2(2000);
begin
open c_constraint;
fetch c_constraint into PConstr,PTyp,PCond,PROwn,PRConstr;
while c_constraint%FOUND loop
insert into xdummy(object_name,object_type,rownm,text)
values(PConstr,'CONSTRAINT',1,'alter table '||PTableName||' add (constraint "'||
PConstr||'" '||PTyp||' (');
if PTyp = 'CHECK' then
insert into xdummy(object_name,object_type,rownm,text)
values(PConstr,'CONSTRAINT',2,PCond);
insert into xdummy(object_name,object_type,rownm,text)
values(PConstr,'CONSTRAINT',3,'));');
elsif PTyp in ('PRIMARY KEY','UNIQUE') then
for r in c_columns('&1',PConstr) loop
if c_columns%ROWCOUNT = 1 then
PText := r.column_name;
else
PText := PText||','||r.column_name;
end if;
end loop;
PText := PText||'));';
insert into xdummy(object_name,object_type,rownm,text)
values(PConstr,'CONSTRAINT',2,PText);
elsif PTyp = 'FOREIGN KEY' then
for r in c_columns('&1',PConstr) loop
if c_columns%ROWCOUNT = 1 then
PText := r.column_name;
else
PText := PText||','||r.column_name;
end if;
end loop;
PText := PText||')';
insert into xdummy(object_name,object_type,rownm,text)
values(PConstr,'CONSTRAINT',2,PText);
for r in c_columns(PROwn,PRConstr) loop
if c_columns%ROWCOUNT = 1 then
PText := ' REFERENCES '||r.table_name||'('||r.column_name;
else
PText := PText||','||r.column_name;
end if;
end loop;
PText := PText||'));';
insert into xdummy(object_name,object_type,rownm,text)
values(PConstr,'CONSTRAINT',3,PText);
end if;
fetch c_constraint into PConstr,PTyp,PCond,PROwn,PRConstr;
end loop;
close c_constraint;
end Constraints;
--
procedure P_Indexes(PIndexName in Varchar2,Dummy in Varchar2) is
cursor c_columns is
select table_name,column_name
from all_ind_columns
where index_name = PIndexName and
index_owner = upper('&1')
order by column_position;
cursor c_unique is
select uniqueness from all_indexes
where index_name = PIndexName and
owner = upper('&1');
PTable Varchar2(30);
PColumn Varchar2(30);
PText Varchar2(1000);
PRownm Number;
PUniqueness Varchar2(20);
begin
open c_unique;
fetch c_unique into PUniqueness;
close c_unique;
open c_columns;
fetch c_columns into PTable,PColumn;
PRownm := 1;
while c_columns%FOUND loop
if PRownm = 1 then
if PUniqueness = 'UNIQUE' then
PText := 'create unique index '||PIndexName||' on '||PTable||' ('||PColumn;
else
PText := 'create index '||PIndexName||' on '||PTable||' ('||PColumn;
end if;
else
PText := ','||PColumn;
end if;
insert into XDummy(object_name,object_type,rownm,text)
values(PIndexName,'INDEX',PRownm,PText);
fetch c_columns into PTable,PColumn;
PRownm := PRownm + 1;
end loop;
insert into XDummy(object_name,object_type,rownm,text)
values(PIndexName,'INDEX',PRownm+1,')'||chr(10)||';'||chr(10));
close c_columns;
commit;
end P_Indexes;
--
procedure P_Sequences(PSequenceName in Varchar2,Dummy in Varchar2) is
begin
insert into xdummy(object_name,object_type,rownm,text)
select PSequenceName,'SEQUENCE',1,
'create sequence '||PSEquenceName||chr(10)||'start with '||to_char(last_number)||
chr(10)||'increment by '||to_char(increment_by)||';'||chr(10)
from all_sequences
where sequence_name = PSequenceName and
sequence_owner = upper('&1');
commit;
end P_Sequences;
--
procedure P_Sources(SrcName in Varchar2,SrcType in Varchar2) is
cursor c_text is
select text from all_source
where name = SrcName and
type = SrcType and
owner = upper('&1')
order by line;
PText Varchar2(1000);
PRownm Number;
begin
for r_text in c_text loop
if c_text%ROWCOUNT = 1 then
PText := 'create '||r_text.text;
else
PText := r_text.text;
end if;
PRownm := c_text%ROWCOUNT;
insert into XDummy(object_name,object_type,rownm,text)
values(SrcName,SrcType,PRownm,PText);
end loop;
insert into XDummy(object_name,object_type,rownm,text)
values(SrcName,SrcType,PRownm+1,'/'||chr(10));
commit;
end P_Sources;
--
procedure P_Tables(PTableName in Varchar2,Dummy in Varchar2) is
cursor c_columns is
select column_name,data_type,data_length,data_precision,data_scale,
nullable,default_length,data_default
from all_tab_columns
where table_name = PTableName and
owner = upper('&1');
PColumn Varchar2(30);
PDataType Varchar2(9);
PDataLength Number;
PDataPrec Number;
PDataScale Number;
PNull Varchar2(1);
PDefLength Number;
PDefault Varchar2(2000);
PText Varchar2(1000);
PRownm Number;
begin
open c_columns;
fetch c_columns into PColumn,PDataType,PDataLength,PDataPrec,PDataScale,
PNull,PDefLength,PDefault;
PRownm := 1;
while c_columns%FOUND loop
if PRownm = 1 then
PText := 'create table '||PTableName||chr(10)||'('||chr(10)||PColumn;
else
PText := ','||PColumn;
end if;
PText := PText||' '||lower(PDataType);
if PDataType in ('VARCHAR2','CHAR','NUMBER') then
if PDataPrec is not null then
PText := PText||'('||PDataPrec;
if nvl(PDataScale,0) <> 0 then
PText := PText||','||PDataScale||')';
else
PText := PText||')';
end if;
else
if PDataLength > 0 then
PText := PText||'('||PDataLength||')';
end if;
end if;
end if;
if PDefault is not null then
PText := PText||' DEFAULT '||substr(PDefault,1,PDefLength);
end if;
if PNull = 'Y' then
PText := PText||' NULL';
else
PText := PText||' NOT NULL';
end if;
insert into XDummy(object_name,object_type,rownm,text)
values(PTableName,'TABLE',PRownm,PText);
fetch c_columns into PColumn,PDataType,PDataLength,PDataPrec,PDataScale,
PNull,PDefLength,PDefault;
PRownm := PRownm + 1;
end loop;
insert into XDummy(object_name,object_type,rownm,text)
values(PTableName,'TABLE',PRownm+1,')'||chr(10)||';'||chr(10));
close c_columns;
Constraints(PTableName);
commit;
end P_Tables;
--
procedure P_Views(PViewName in Varchar2,Dummy in Varchar2) is
cursor c_columns is
select column_name
from all_tab_columns
where table_name = PViewName and
owner = upper('&1')
order by column_id;
cursor c_view is
select text from all_views
where view_name = PViewName and
owner = upper('&1');
PColumn Varchar2(30);
PText Varchar2(5000);
PRownm Number;
begin
open c_columns;
fetch c_columns into PColumn;
PRownm := 1;
while c_columns%FOUND loop
if PRownm = 1 then
PText := 'create view '||PViewName||chr(10)||'('||chr(10)||PColumn;
else
PText := ','||PColumn;
end if;
insert into XDummy(object_name,object_type,rownm,text)
values(PViewName,'VIEW',PRownm,PText);
fetch c_columns into PColumn;
PRownm := PRownm + 1;
end loop;
insert into XDummy(object_name,object_type,rownm,text)
values(PViewName,'VIEW',PRownm+1,')'||chr(10)||'AS');
close c_columns;
open c_view;
fetch c_view into PText;
close c_view;
insert into XDummy(object_name,object_type,rownm,text)
values(PViewName,'VIEW',PRownm+1,PText||chr(10)||';'||chr(10));
commit;
end P_Views;
--
procedure P_Triggers(PTriggerName in Varchar2,Dummy in Varchar2) is
cursor c_triggers is
select description,trigger_body
from all_triggers
where trigger_name = PTriggerName and
owner = upper('&1');
PDescr Varchar2(2000);
PBody Varchar2(32000);
PRownm Number := 2;
PText Varchar2(2000);
begin
open c_triggers;
fetch c_triggers into PDescr,PBody;
insert into XDummy(object_name,object_type,rownm,text)
values(PTriggerName,'TRIGGER',1,'create trigger '||PDescr);
while instr(PBody,chr(10)) > 0 loop
PText := substr(PBody,1,instr(PBody,chr(10)));
insert into XDummy(object_name,object_type,rownm,text)
values(PTriggerName,'TRIGGER',PRownm,PText);
PBody := substr(PBody,instr(PBody,chr(10))+1);
PRownm := PRownm + 1;
end loop;
insert into XDummy(object_name,object_type,rownm,text)
values(PTriggerName,'TRIGGER',PRownm+1,PBody||'/'||chr(10));
close c_triggers;
end P_Triggers;
end SPINKYHO_OBJEKTY;
/
set echo off
set termout off
set feedback off
set heading off
prompt Sestavuji seznam dB objektů...
spool main.sql
select 'prompt '||object_type||' '||object_name||'...'||chr(10)||
'execute spinkyho_objekty.'||decode(object_type,'TABLE','P_Tables',
'VIEW','P_Views','SEQUENCE','P_Sequences','INDEX','P_Indexes',
'TRIGGER','P_Triggers','P_Sources')||
' ('''||object_name||''','''||object_type||''');'
from /*all_objects*/ sys.dba_objects
where object_name != 'XDUMMY' and
object_name != 'SPINKYHO_OBJEKTY' and
object_name like upper('&2') and
owner like upper('&1')
order by decode(object_type,'TABLE',1,'INDEX',2,'SEQUENCE',3,
'VIEW',4,'TRIGGER','5','6');
spool off;
set termout on
@main.sql
prompt Vytvarim vysledny soubor...
set termout off
set recsep off
set pages 999
spool dict.sql
select text from xdummy
order by decode(object_type,'TABLE',1,'INDEX',2,'SEQUENCE',3,
'VIEW',4,'TRIGGER','5','6'),object_name,rownm;
spool off;
set termout on
set recsep wrapped
set verify on
set heading on
set feedback on
set pages 60
prompt Ruším pomocné objekty...
drop table XDummy;
drop package spinkyho_objekty;
如果您需要導出數據,使用
set feedback off
rem set trimspool on /* 8.1 feature */
set lines 10000
set pages 9999 /* set pages 0 works since Oracle 8 */
spool data.sql
select 'insert into your_table(column1, ...) values ('''||column1||''','''...''');)'
from your table;
spool off
設置trimspool,行,假脫機對oracle 7不起作用我一直收到未知的命令.... – user3731575
是的,你說得對。我評論一下。該命令修剪文件輸出的尾部空格,這不是必需的。 –
- 1. 腳本來生成數據,SQL oracle 10g
- 2. 生成腳本[ORACLE]
- 3. 從excel表生成Oracle PL/SQL腳本
- 4. 使用包含命令空格的元素生成bash腳本數組
- 5. 在生成的數據庫模式腳本中包含CHECK CONSTRAINT&GO的用途
- 6. Oracle使用包含計算的先前表格中的數據創建表格
- 7. 從SQLSERVER數據庫生成Oracle SQL腳本
- 8. 用於爲表格生成腳本的SQL服務器腳本
- 9. 生成一個文本文件的周圍包含數據
- 10. 爲數據的子集生成腳本
- 11. 使用Oracle Sql Developer生成DDL以包含外鍵
- 12. 如何生成包含表格或數據庫信息的可打印標籤?
- 13. 如何生成Oracle數據庫導出腳本使用Oracle SQL Developer?
- 14. 在Oracle數據庫中使用Apache FOP生成包含SVG圖像的PDF
- 15. 生成數據包
- 16. 從c#數據庫生成腳本
- 17. 從MDF數據庫生成腳本
- 18. 爲模式和數據生成腳本
- 19. 數據腳本生成問題
- 20. 生成數據庫創建腳本
- 21. 從表生成sql腳本
- 22. 生成腳本塊包含自定義語言在運行時
- 23. 在大型嵌入式數據源上生成包含數據透視表的Excel電子表格?
- 24. 包含外部html表格數據
- 25. 生成包含多個表格的報告
- 26. 生成一個包含動態行高度的HTML表格
- 27. 預生成腳本路徑和預生成腳本參數
- 28. 在包含可迭代參數的python中生成多個bash腳本
- 29. 爲數據庫中的所有表/列生成DDL/DML腳本
- 30. 如何使用C#生成帶有數據的表腳本
你要問什麼樣的數據字典視圖使用?或如何編寫腳本?或者你只是想讓別人爲你做? – Randy