① 在oracle中怎樣把一個資料庫中的一張表的數據復制到另一個資料庫中的一張表中
1、使用plsql連接上資料庫,展開【Tables】菜單項,下面出現的就是資料庫表。
② 如何把sql server一張表的數據實時同步到Oracle資料庫
如何把sql
server一張表的數據實時同步到oracle資料庫
1.
sqlserver伺服器上面安裝oracle客戶端,配置服務命名(假設為
test)
2.
在sqlserver伺服器上面建立鏈接伺服器,腳本如下
sql
code?
sql
code--
adding
linked
server:
exec
sp_addlinkedserver
@server
=
'test'
,
@srvproct
=
'oracle',
@provider
=
'msra',
@datasrc
=
'test'
③ sqlserver整個資料庫怎麼轉移到oracle資料庫
遷移主要有兩個工作:
1.
根據Sql
Server資料庫生成創建Oracle資料庫的腳本
2.
修改代碼中的SQL語句
根據Sql
Server資料庫生成創建Oracle資料庫的腳本
1.
用PowerDesiner將Sql
Server資料庫反向工程生成物理數據模型
2.
根據反向工程生成的物理數據模型創建邏輯模型
3.
再根據邏輯模型生成Oracle資料庫版本的物理模型
4.
根據Oracle資料庫版本的物理模型生成Oracle資料庫創建腳本
5.
按照Oracle命名規則和數據類型定義修改Oracle資料庫創建腳本
6.
在PL/SQL
Developer中執行以檢驗其正確性
修改代碼中的SQL語句
1.
Sql
Server中經常用方括弧把表名和欄位名括起來,
到Oracle中要把這些方括弧都去掉
2.
將參數變更前的"@"符號改為":"符號
3.
將Sql
Server專有的方法和函數替換成Oracle相應的方法和函數
4.
在PL/SQL
Developer中執行SQL語句以檢驗其正確性
轉換過程中的常見問題
1.
表名和欄位名使用了Oracle中的關鍵字
2.
Sql
Server中的NVARCHAR數據類型可存4000個漢字,
Oracle中的NVARCHAR/NVARCHAR2數據類型只能存2000個漢字
3.
索引名稱和外鍵名稱超過了30個字元
④ 用PlSql對Oracle資料庫進行數據遷移
遷移的話,直接導出一個庫的dmp文件,之後導入到另外一個庫裡面就可以了(導出和導入資料庫版本必須一直,否則導入可能會報錯)。
遷移數據導出:
1 將資料庫TEST完全導出,用戶名system 密碼manager 導出到D:chu.dmp中
exp system/manager@TEST file=d:chu.dmp full=y
2 將資料庫中system用戶與sys用戶的表導出
exp system/manager@TEST file=d:chu.dmp owner=(system,sys)
3 將資料庫中的表table1 、table2導出
exp system/manager@TEST file=d:chu.dmp tables=(table1,table2)
4 將資料庫中的表table1中的欄位filed1以"00"打頭的數據導出
exp system/manager@TEST file=d:chu.dmp tables=(table1) query=" where filed1 like '00%'"
遷移數據的導入
1 將D:chu.dmp 中的數據導入 TEST資料庫中。
imp system/manager@TEST file=d:chu.dmp
上面可能有點問題,因為有的表已經存在,然後它就報錯,對該表就不進行導入。
在後面加上 ignore=y 就可以了。
2 將d:chu.dmp中的表table1 導入
imp system/manager@TEST file=d:chu.dmp tables=(table1)
⑤ 如何從SQL Server遷移大批量數據到Oracle
下面要說的是如果將txt文本數據導入到Oracle中
Dos 環境下使用SQl*Loader命令 載入
使用其它資料庫的數據轉移工具
Oracle 企業管理器中的數據載入功能
具體的技術實現
一、Dos 環境下載入
1、首先,伺服器端的偵聽服務必須已經開啟。
測試方法:Dos 下輸入
C:/>sqlplus username/password@serviceName
2、然後使用 Oracle 的 sqlldr 命令進行數據的導入
前期條件
1) Oracle 資料庫端必須已經建好了需要導入的數據表的結構
2) 一個數據源文件 下面例子中為製表符分隔的文本文件 model.txt ,為Excel 表中導出的
3) 手工編輯一個XXX.CTL 的控制文件
4) 命令行載入數據
如下實例:
以下文件預設放到C:/ 下,如果不是,就需要指明全路徑
1. 命令控制文件 input.ctl 內容
命令
說明
load data
1、控制文件標識
infile 'model.txt'
2、要輸入的數據文件名為test.txt
append into table system.塔位屬性表
3、向表test中追加記錄
fields terminated by X'09'
4、指定分隔符,欄位終止於X'09',是一個製表符(TAB)
(編號,名稱,大小)
5、定義列對應表中順序
控制文件中指定插入數據的方式關鍵字
insert,為預設方式,在數據裝載開始時要求表為空
append,在表中追加新記錄
replace,刪除舊記錄,替換成新裝載的記錄
truncate,同上
在 Dos 窗口下使用 SQl*Loader 命令實現數據的導入
C:/>sqlldr userid=system/manager@ serviceName control=input.ctl
默認日誌文件名為:input.log
默認壞記錄文件為:input.bad
二、使用其它資料庫轉移工具
以下以SQL Server 導入導出向導為例
1、在數據的導入導出向導中設置數據源伺服器,實例中選擇數據源選擇SQL Server
2、然後指定要導入的Oracle 數據源
3、需要配置Oracle 的屬性信息
需要注意的是,登錄資料庫的用戶信息即為數據導入之後的方案名,即導入之後的SQL Server 中的表在Oracle 中標志名為 username.表名
以下按照提示即可,可以完全導入SQl Server 中的數據表和視圖,也可以使用查詢語句返回你要選擇的列或者行。
三、Oracle 企業管理器中的數據載入功能
登錄Oracle 的控制台界面,針對單獨的數據表可以使用數據載入工具
中間需要指定控制文件等,同Dos 載入一致,不再重復
----------------------------------------------------
向Oracle中導入文本數據時使用的控制文件格式
無論是使用上一篇中的哪種方式都需要有一個控制文件,下面是控制文件(ctl文件)書寫的基本格式:
命令
說明
load data
1、控制文件標識
infile 'testl.txt'
2、要輸入的數據文件名為test.txt,此時是要導入的數據文件同控制文件在同一路徑下,如果不在同一路徑下則需要寫完整路徑名
append into table 表名(可以是全名也可以是同義詞)
3、向表test中追加記錄
fields terminated by X'09'
4、指定分隔符,欄位終止於X'09',是一個製表符(TAB),如果用逗號分割就將X'09'替換為','
(編號,名稱,大小)
5、定義列對應表中順序
控制文件中指定插入數據的方式關鍵字
insert,為預設方式,在數據裝載開始時要求表為空
append,在表中追加新記錄
replace,刪除舊記錄,替換成新裝載的記錄
truncate,同上
控制文件的示例:
load data
infile 'test.txt'
append into table test.test
fields terminated by X'09'
(test,test1,test2)
對有時間類型的數據導入的示例控制文件:
load data
infile 'h:/TB_FACT_PHS_TICKET_DAY.txt'
Append into TABLE TB_FACT_PHS_TICKET_DAY
fields terminated by X'09'
(Time_Id
,Region_Id
,Cust_Type_Id
,Prod_Type_Id
,Acct_Item_Type_Id
,Acct_Item_Type_Cd
,Exchange97_Cd
,Latn_Cd
,Call_Duration
,Access_In_Duration
,Income
,In_Date Date "YYYY-MM-DD"
)
文件導入命令 C:/>sqlldr userid=test/test@test control=test.ctl(此時控制文件test.ctl存在C:/路徑下)
在命令控制符下進入Oracle C:/>sqlplus username/password@serviceName
oracle導入txt數據文件2008年07月30日 星期三 17:21把txt文件格式的數據文件導入oracle的方法是利用sqlloader工具。
第一步:把文本格式的數據文件放入C盤。如,test.txt
第二步:建立控制文件append.ctl。(名字可以隨便取,放C盤下)
append.ctl的內容如下:
load data --1、控制文件標識
infile 'test.txt' --2、要輸入的數據文件名為test.txt
append into table CTXSYS.test--3、向CTXSYS表空間中的表test中追加記錄
fields terminated by X'09' --4、欄位終止於X'09',是一個製表符
(id,username,password,sj) -----定義列對應順序
其中append為數據裝載方式,還有其他選項:
a、insert,為預設方式,在數據裝載開始時要求表為空
b、append,在表中追加新記錄
c、replace,刪除舊記錄,替換成新裝載的記錄
d、truncate,同上
第三步:在命令提示符下輸入命令。
C:/>sqlldr userid=username/password
control=c:/append.ctl 資料庫中用名的用戶名和密碼
或者 C:/>sqlldr userid=system/manager@ serviceName control=input.ctl
第二條命令中的system資料庫用戶名
manager密碼
@serviceName 是Oracle中本地配置文件的服務名
----------------------------------------------------
一些經常出現的問題:
1。關於日期格式的問題:
ctl基本寫法諸如:
load data
infile 'C:/TP_LOANCONTRACTSUM.txt'
insert into table TP_LOANCONTRACTSUM
fields terminated by '|!'
(
column01,
column02,
column03,
column04 "to_date(:column04,'''yyyy-mm-dd hh24:mi:ss''')",
column05 "to_date(:column05,'''yyyy-mm-dd hh24:mi:ss''')",
column06,
column07,
column08,
column09,
column10,
column11,
column12 "to_date(:column12,'''yyyy-mm-dd hh24:mi:ss''')",
column13
)
2。關於長字元串問題,CTL默認情況下是256位(或者256位左右),所以長字元串時會在log里報錯,提示所輸入的值超過最大長度,解決辦法,在ctl文件里再指定大小,注意個情況,不能寫VARCHAR只能寫CHAR,否則報錯,諸如:
load data
infile 'C:/TP_PLEDGECONTRACTINFO.txt'
insert into table TP_PLEDGECONTRACTINFO
fields terminated by '|!'
(
column01,
column02,
column03,
column04,
column05,
column06,
column07 "to_date(:column07,'''yyyy-mm-dd hh24:mi:ss''')",
column08,
column09,
column10 "to_date(:column10,'''yyyy-mm-dd hh24:mi:ss''')",
column11,
column12,
column13,
column14,
column15 "to_date(:column15,'''yyyy-mm-dd hh24:mi:ss''')",
column16,
column17,
column18 "to_date(:column18,'''yyyy-mm-dd hh24:mi:ss''')",
column19,
column20,
column21,
column22,
column23,
column24,
column25 "to_date(:column25,'''yyyy-mm-dd hh24:mi:ss''')",
column26 CHAR(500),
column27,
column28
)
⑥ 如何將SQL數據導入ORACLE資料庫中
然後 , 打開PL/SQL 上方Tools——Text Importer——open datafile(左上角)——選擇你的CSV表,打開 記得,勾選左側Name In Header,選擇到Data To Oracle,在這里選擇你要導入到ORACLE里的表和這張表的OWNER,在右側選擇相應欄位,如果對應的上,下面的Import就會亮,好了,每一列挨個點。 注意點:欄位類型別搞錯了。 增長值必須改為序列,時間類型,必須設定默認值,字元中設為『』,因為從SQL中出來的CSV文件,空值都為NULL,相對應在ORACLE會存為NULL,而字元類型的 NULL,頁面讀取時會顯示NULL。 所謂「CSV」,是Comma Separated Value(逗號分隔值)的英文縮寫,通常都是純文本文件。下面是一個實際CSV文件中的部分內容,讓大家對他有一個感性的認識。我們選的是Sjojo_Rescan 的CSV文件(Sjojo是ASW-亞洲掃圖風的成員之一)。 sj_mino1001.jpg,715282,4FB55FE8, sj_mino1002.jpg,471289,93203C5C, sj_mino1003.jpg,451929,C4E80467, 通常CSV文件開頭是不留空的,以行為單位,每行中記錄一張圖片的了多項數據,每項數據用逗號 來分隔(標准英文逗號)。一般說來集圖用的.CSV文件的格式是這樣的:
⑦ 如何把sql2005資料庫的表的數據導入到oracle
建議寫個小程序導入
第一步:
在oracle資料庫中對應sql2005資料庫新建表
第二步:
寫個程序
讀取sql2005相應表的數據,分別生成excel
第三步:
讀取相應的excel,添加到oracle資料庫表中
⑧ sqlsever轉移數據到oracle中時,報錯
1.選擇數據源時換成 Oracle Provider for OLD DB。不要用MS 那個。
2.內置賬戶改為本地賬戶。如果修改完了還出現此問題那就要看看你指定要將數據復制到何處,目標為:oracle provider for OLE DB 這個才是正確的。如果你開始導出都成功,那肯定是你虛擬內存不夠
3.連接沒配對
4.看看oracle中用到了oracle中特有的類型嗎
⑨ 如何把sql server資料庫遷移到oracle
前陣做了下資料庫遷移,從Sql Server2005遷移到Oracle
10g,這里說一下遷移的方法。
Sql
Server和Oracle區別比較大,包括語法,欄位類型,資料庫機制,配置管理方法等等,區別是全方位的,做遷移需要注意很多問題,在遷移過程中也會遇到問題,需要細細處理之。這里說一下資料庫結構的遷移,和遷移過程中注意的一些問題。(當然具體的資料庫遷移過程中可能問題是不一樣的,具體問題具體分析了)
遷移的方法是從Sql Server已有資料庫中生成出Oracle的建庫腳本,然後在Oracle資料庫上執行。用到的生成工具是Power
Designer。
1、打開PD(Power
Designer簡稱,以下均使用PD),新建一個PDM(物理數據模型),DBMS選擇Microsoft SQL
Server2005,Model name起名叫做mssdb。
2、通過逆向工程將現有Sql
Server資料庫生成PDM
(1)選擇Database->Reverse
Engineer Database,配置數據源,選擇要遷移的資料庫,輸入用戶名、密碼。
(2)選擇資料庫,選擇用戶dbo下的所有表、視圖、存儲過程、方法、觸發器、序列等(由於Sql Server與oracle,資料庫概念上的區別,這里不需選擇用戶、角色)。
點擊OK,生成PDM。已經建立過PDM的情況,這一步可以省略。
3、生成Oracle物理數據模型
選擇Tools->Generate Physical Data Model
(1)DBMS選擇Oracle
10g,輸入名稱:oradb。
(2)在Configure Model
Options配置中, Model Settings的Table&View界面中,勾選Ignore
identifying owner。Oracle中用戶的概念與Sql Server不同,這里忽略owner。
(3)Selection標簽,選擇需要生成的所有表、視圖、外鍵、存儲過程、方法、觸發器、序列等。
點擊確定,即生成了oracle 的PDM。
注意,在生成PDM的過程中可能不會一帆風順,有可能會報錯(比如提示對象長度超限),這會導致生成失敗。這時需要根據具體錯誤提示做相應修改(可能需要多次調整,沒有辦法,誰讓兩者差別這么大的呢)。
4、生成Oracle腳本
與Sql
Server不同的是,在Oracle里表名、欄位名全部為大寫,若要單獨處理為小寫,需加上雙引號。而PD生成的腳本默認是有雙引號的,這里需要修改默認配置,去掉雙引號。
然後選擇oradb,然後選擇Database->Generate
Database,進入資料庫生成界面
在Format標簽下,去掉勾選Owner prefix,它將省掉建表語句前「dbo.」所帶來的麻煩;
在Selection標簽下,選擇要生成腳本的各對象;
在Preview標簽下,可以預覽預生成的腳本(表較多時,切換會比較慢)。
點擊確定,即得到生成的腳本。
5、檢查與調整
腳本是PD自動生成的,因為表比較多,在oracle上直接去執行難免會有錯誤。所以在執行之前需要檢查下腳本的正確性。這里提幾點需要注意的地方。
(1)Oracle要求表名、欄位名等長度最多是30位,而Sql Server沒有這個限制,所以可能會有在Sql
Server創建正常的表而在Oracle下會創建失敗。
(2)檢查一下主鍵、外鍵的名稱,它們有可能是隨機生成的名稱。可根據相應規范進行修改。
(3)檢查欄位名是否用到了Oracle的關鍵字。比如Sql
Server命名「備注」欄位可能會用「comment」、標題用「title」,但comment、title在Oracle中是關鍵字,不可以做為欄位名稱。
(4)存儲過程、方法是否符合Oracle語法。
(5)Sql
Server有自增欄位,而Oracle沒有。要實現此功能,需要相應創建序列、觸發器。
(6)Sql
Server中欄位類型為text的情況,如果是存二進制數據需要在Oracle中選用Blob欄位類型。
(7)Sql
Server有外鍵的情況,主表記錄刪除,從表記錄也會跟著刪除;而Oracle默認情況是當從表有記錄時,所對應的主表記錄不允許刪除。所以這種情況下外鍵需要添加外鍵級聯刪除。
(8)生成的表、視圖等個數是否正確,缺失的情況可單獨生成腳本。
系統不一樣,出現問題的點可能也不一樣,具體問題具體分析。
6、建庫
在Oracle資料庫服務(當然要先安裝好Oracle服務端、並建立資料庫)orcl實例下,使用用戶sys登陸並創建用戶orauser,並將resource、connect角色賦給orauser(這里,orauser使用默認表空間、默認臨時表空間)。
用剛創建的用戶orauser登陸orcl資料庫服務,執行前面已經生成的腳本,若干分鍾後腳本執行完畢,觀察一下執行過程中有無錯誤產生,也可以記錄執行的日誌以便日後查看;檢查看錶、視圖等個數與Sql
Server資料庫中是否一致。如果都正確,那麼,資料庫結構從Sql
Server到Oracle的遷移到此結束。當然,遷移的是否正確還需要在之後的使用中檢查,發現錯誤及時修改即可。
⑩ 求助:怎麼把SQL資料庫導入到ORACLE中。
1.打開工具:
開始->程序->Microsoft SQLServer->導入和SQL Server數據導出數據
2.下一步,選擇數據源
[數據源]選擇「用於SQL Server的Microsoft OLE DB提供程序」,這應該是預設值。
[伺服器]選擇要導出數據的伺服器,如果是本機,選擇(local)
[資料庫]選擇要導出的數據所在的庫,這里選擇Northwind
3.下一步,選擇目的
[目的]選擇Microsoft ODBC for Oracle
[DSN]選擇用戶/系統DSN一項,然後在下拉列表框中找一個已經連接到了Scott用戶的DSN名稱。
如果下拉列表中沒有,點下拉列表框右側的[新建],出現創建新數據源界面。
接下來選擇系統數據源,下一步,在驅動程序列表中選擇Microsoft ODBC for Oracle
下一步,完成,出現Microsoft ODBC for Oracle安裝界面
[數據源名稱]隨便輸入,比如sss
[說明]可以不填
[用戶名稱]填入要SQL Server數據導出到的Oracle用戶名稱,這里是scott
[伺服器]填入要連接到Oracle伺服器所使用的服務名,比方說使用sqlplus scott/tiger@server1可以連接到資料庫,那麼這里就填入server1。如果本機就是伺服器,使用sqlplus scott/tiger即可連接到資料庫,這里空著不填即可。
這樣就創建好了一個數據源sss,保證下拉列表框中選擇了sss一項。
[用戶名]填入SQL Server數據導出到的Oracle用戶名稱,這里是scott
[密碼]填入SQL Server數據導出到的Oracle用戶使用的密碼,這里是tiger
4.下一步,指定表復制或查詢
如果要導出的內容是整個表,選擇[從源資料庫復製表和視圖]
如果要導出的內容是表的一部分列,行,可以選擇[用一條查詢指定要傳輸的數據],這時需要寫出一個查詢語句
這里選擇第一項[從源資料庫復製表和視圖]
5.下一步,選擇源表和視圖
點中要導出的表Procts一行的復選框,目的、轉換兩欄就會出現內容。
目的可以用來選擇表名。轉換可以用來修改列的數據類型或是整個建表的SQL語句
6.下一步,保存、調度和復制包
選中立即運行
7.下一步,正在完成DTS導入/導出向導
8.完成
提示「成功地將n個表從Microsoft SQLServer復制到了Oracle」