sql server 2005導出數據到oracle

来源:http://www.cnblogs.com/Mr-kevin/archive/2016/06/29/5627605.html
-Advertisement-
Play Games

一. 在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.colorder
View 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.name
View 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 columnNameToUpper
View 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 tableNameToUpper
View 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. 建立視圖、主鍵、外鍵、索引等

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 簡介: Redis 是一個開源的,高性能的 key-value 系統,可以用來緩存或存儲數據。 Redis 數據可以持久化,並且支持多種數據類型:字元串(string),列表(list),哈希(hash),集合(set)和有序集合(sorted set)。 能夠對關係型資料庫起到很好的補充作用。它還 ...
  • 什麼是臨界點? 註意,我要說的問題是非聚集索引的執行計劃從Seek+Lookup變成Table/Clustered Index Scan的臨界點。SQL Server的訪問數據的IO最小單元是頁。 我們知道聚集索引的葉級是數據頁,非聚集索引的葉級是指向數據行的指針。所以通過聚集索引獲取數據時,就是直 ...
  • 一. 表空間相關命令 創建數據表空間 create SMALLFILE tablespace dataSpace datafile 'E:\oracle\product\10.2.0\oradata\orcl\dataSpace.dbf' SIZE 50M autoextend on next 10 ...
  • WITH RECURSIVE and MySQL If you have been using certain DBMSs, or reading recent versions of the SQL standard, you are probably aware of the so-called ...
  • 官方文檔:http://hbase.apache.org/book.html java簡單操作hbase的表 ...
  • 一、概述: 字元串類型是Redis中最為基礎的數據存儲類型,它在Redis中是二進位安全的,這便意味著該類型可以接受任何格式的數據,如JPEG圖像數據或Json對象描述信息等。在Redis中字元串類型的Value最多可以容納的數據長度是512M。二、相關命令列表: 三、命令示例: 1. SET/GE ...
  • 使用sql server的時候,免不了與xml的參數打交道,xml大多數時候都給我們的程式帶來方便,但是也有些時候會有變數賦值不通過的時候。(當然羅,如果你本身xml都通不過 xml spy 之類軟體的檢查的話那就不是這方面的範圍啦~) 今天分享的例子非常簡單,就測試幾個例子 例子1 : 我們平常見 ...
  • 介紹 作業也叫做事件調度,其實它也就是一個時間觸發器;它可以定義某個時間點執行指定的資料庫命令操作。 語法 CREATE [DEFINER = { user | CURRENT_USER }] ######定義創建人,預設創建事件的用戶就是事件的定義人,必須具備super許可權才能指定其他用戶。 EV ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...