一. 在sql server下處理需要導出的資料庫 1. 執行以下sql,查出所有'float'類型的欄位名,手動將float類型改為decimal(18,4). select 表名=d.name,欄位名=a.name,類型=b.name FROM syscolumns a left join sy ...
一. 在sql server下處理需要導出的資料庫
1. 執行以下sql,查出所有'float'類型的欄位名,手動將float類型改為decimal(18,4).
select 表名=d.name,欄位名=a.name,類型=b.name FROM syscolumns a left join systypes b on a.xtype=b.xusertype inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties' where b.name in ('float') order by d.name;View Code
2. 執行以下sql,查出sql server中的欄位名在oracle屬於內部關鍵詞,並手動修改.
select 表名=d.name,欄位名=a.name FROM syscolumns a inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties' where a.name in ('NUMBER','LEVEL','ROW','rowNum','rows','mode') order by a.id,a.colorderView Code
3. 查詢類型為text並且值為空的欄位,設置為'-',否則導出時會報錯誤(該語句查詢出一組sql語句),將查詢出來的一組sql語句全部拷貝出來並全部執行.
select 'update '+ d.name +' set '+ a.name +'=''-'' where '+ a.name +' like ''''' FROM syscolumns a left join systypes b on a.xtype=b.xusertype inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties' where b.name in ('TEXT') order by d.nameView Code
4. 執行下列存儲過程,將所有數據表的列名大寫.
/*修改列名大寫*/ drop procedure columnNameToUpper go /*創建存儲過程*/ create procedure columnNameToUpper as /*聲明變數*/ declare @tableName varchar(128), @columnName varchar(128) /*聲明游標*/ declare @cursorVar Cursor /*給游標賦值*/ set @cursorVar=Cursor For select obj.name,upper(col.name) from syscolumns col,sysobjects obj where obj.xtype='U' and obj.id=col.id; /*打開游標*/ Open @cursorVar /*取一條數據賦給變數*/ Fetch Next From @cursorVar Into @tableName,@columnName /*聲明執行語句變數*/ Declare @executeSql nvarchar(2000) While(@@FETCH_STATUS=0) Begin /*獲得要執行的SQL語句*/ set @executeSql=N'exec sp_rename '''+@tableName+'.'+@columnName+''','''+@columnName+''''; /*動態執行存儲過程*/ execute sp_executesql @stmt=@executeSql /*取下一條數據*/ Fetch Next From @cursorVar Into @tableName,@columnName End /*關閉游標*/ Close @cursorVar /*釋放資源*/ Deallocate @cursorVar /*返回*/ Return /*將上一個go到此的存儲過程提交資料庫執行*/ go /*執行存儲過程*/ execute columnNameToUpperView Code
5. 執行下列存儲過程,將所有表名大寫.
/*修改表名大寫*/ drop procedure tableNameToUpper go /*創建存儲過程*/ create procedure tableNameToUpper as /*聲明變數*/ declare @tableName varchar(128), @uptableName varchar(128) /*聲明游標*/ declare @cursorVar Cursor /*給游標賦值*/ set @cursorVar=Cursor For select obj.name,upper(obj.name) from sysobjects obj where obj.xtype='U' and name!='dtproperties'; /*打開游標*/ Open @cursorVar /*取一條數據賦給變數*/ Fetch Next From @cursorVar Into @tableName,@uptableName /*聲明執行語句變數*/ Declare @executeSql nvarchar(2000) While(@@FETCH_STATUS=0) Begin /*獲得要執行的SQL語句*/ set @executeSql=N'exec sp_rename '''+@tableName+''','''+@uptableName+''''; /*動態執行存儲過程*/ execute sp_executesql @stmt=@executeSql /*取下一條數據*/ Fetch Next From @cursorVar Into @tableName,@uptableName End /*關閉游標*/ Close @cursorVar /*釋放資源*/ Deallocate @cursorVar /*返回*/ Return 0 go /*執行存儲過程*/ execute tableNameToUpperView Code
二. 在oracle下以system用戶登錄進行處理
1. 創建表空間
create tablespace ST10005(表空間名) datafile 'D:\oracle\db\ST10005.ora' (數據文件存放地點 D:\oracle\db\文件夾要先存在) size 500M default storage (initial 200m next 50m minextents 20 maxextents 500) online;View Code
2. 創建用戶 (指定預設表空間 和 臨時表空間 指定連接狀態)
CREATE USER ST10005(用戶名) PROFILE DEFAULT IDENTIFIED BY ep(密碼) DEFAULT TABLESPACE ST10005(表空間名) TEMPORARY TABLESPACE TEMP ACCOUNT UNLOCK;View Code
3. 為用戶授權
grant connect,resource,dba to ST10005(用戶名);View Code
三. 用sql server 2005自帶的導入工具將數據導入到oracle
1. 在要導出的資料庫上點擊滑鼠右鍵,選擇"任務"》"導出數據"
2. 依次點擊下一步,在"選擇數據源"頁面填寫相應選項
3. 在"選擇目標"頁,目標欄選擇"Oracle Provider for OLE DB",點擊屬性會彈出個數據鏈接屬性的對話框;如下圖
數據源一欄填寫的是用PLSQL連接時的database;用戶名一欄都要用大寫的;同時要選中“允許保存密碼”選項。
4. 接著下一步直到選擇源表和源視圖,選擇要導入的表,註意:一次不能選太多的表,否則會彈出一個警告,
如彈出了警告,就要少選幾個表,如果不彈出警告,就下一步直到完成。
5. 重覆1-4步操作幾次,將所有的表都導入進去
四. 導入完成後,還需執行以下幾步操作
1. 檢查表的數目是否正確
a. sql server下執行
select count(*) from sysobjects obj where obj.xtype='U' and name!='dtproperties';View Code
b. oracle下執行
select count(*) from user_tables;View Code
2. 建立視圖、主鍵、外鍵、索引等