㈠ DM資料庫遷移到Oracle需要注意什麼 如何遷移
將數據從Mysql遷移到Oracle的注意事項,有如下幾點
1.自動增長的數據類型處理
MYSQL有自動增長的數據類型,插入記錄時不用操作此欄位,會自動獲得數據值。ORACLE沒有自動增長的數據類型,需要建立一個自動增長的序列號,插入記錄時要把序列號的下一個值賦於此欄位。
CREATE SEQUENCE 序列號的名稱 (最好是表名+序列號標記)
INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE;
INSERT 語句插入這個欄位值為: 序列號的名稱.NEXTVAL
2. 單引號的處理
MYSQL里可以用雙引號包起字元串,ORACLE里只可以用單引號包起字元串。在插入和修改字元串前必須做單引號的替換:把所有出現的一個單引號替換成兩個單引號。當然你如果使用 Convert Mysql to Oracle工具就不用考慮這個問題
3.長字元串的處理
在ORACLE中,INSERT和UPDATE時最大可操作的字元串長度小於等於4000個單位元組, 如果要插入更長的字元串, 請考慮欄位用CLOB類型,方法借用ORACLE里自帶的DBMS_LOB程序包。插入修改記錄前一定要做進行非空和長度判斷,不能為空的欄位值和超出長度欄位值都應該提出警告,返回上次操作。
4. 翻頁的SQL語句的處理
MYSQL處理翻頁的SQL語句比較簡單,用LIMIT 開始位置, 記錄個數。ORACLE處理翻頁的SQL語句就比較繁瑣了。每個結果集只有一個ROWNUM欄位標明它的位置, 並且只能用ROWNUM<100, 不能用ROWNUM>80。
5. 日期欄位的處理
MYSQL日期欄位分DATE和TIME兩種,ORACLE日期欄位只有DATE,包含年月日時分秒信息,用當前資料庫的系統時間SYSDATE, 精確到秒。
日期欄位的數學運算公式有很大的不同。
MYSQL找到離當前時間7天用:DATE_FIELD_NAME > SUBDATE(NOW(),INTERVAL 7 DAY)
ORACLE找到離當前時間7天用:DATE_FIELD_NAME >SYSDATE - 7;
6. 字元串的模糊比較
MYSQL里用 欄位名 like '%字元串%',ORACLE里也可以用 欄位名 like '%字元串%' 但這種方法不能使用
索引, 速度不快,用字元串比較函數 instr(欄位名,'字元串')>0 會得到更精確的查找結果。
7. 空字元的處理
MYSQL的非空欄位也有空的內容,ORACLE里定義了非空欄位就不容許有空的內容。按MYSQL的NOT NULL來定義ORACLE表結構, 導數據的時候會產生錯誤。因此導數據時要對空字元進行判斷,如果為NULL或空字元,需要把它改成一個空格的字元串。
Oracle移植到mysql注意事項
客戶用的資料庫是mysql,而研發好的產品支持oracle,我們必須把資料庫環境從oracle移植到mysql。在移植的過程中碰到了下面一些問題,如果我們在最初的設計、編碼過程中注意資料庫的移植性,這種情況下可以完全不需要作額外工作。
一、資料庫環境從oracle移植到mysql碰到的問題。
1、 大小寫敏感的區別(如果伺服器OS是linux)。
在oracle中一般情況下不區分大小寫。有時候我們在使用oracle不注意大小寫的問題,表名和欄位名不加雙引號是不區分大小寫的,像這樣:insert into tableName 和 insert into TABLENAME效果是一樣的,用工具導出創建/數據初始化腳本,得到的結果一般表名和欄位名轉化成了大寫。
但在MySQL中,所使用操作系統的大小寫敏感性決定了資料庫名和表名的大小寫敏感性。資料庫對應數據目錄中的目錄,資料庫中的每個表至少對應資料庫目錄中的一個文件(也可能是多個,取決於存儲引擎)。
因此,使用資料庫或表實際上是操縱這些文件(夾),所以使用操作系統的大小寫敏感性決定了資料庫名和表名的大小寫敏感性。在以linux為內核的操作系統中是大小寫敏感的。
解決辦法,是把mysql的資料庫名和oracle的大小寫保持一致,表名與應用程序中sql字元串中的表名保持
一致,如果應用程序中欄位名用了雙引號,那請把sql中的欄位名大小寫與雙引號里的字元保持一致。如果
你的應用程序所引用的表名、欄位沒有統一大小寫,那麻煩就大了。
2、保留字的區別。
像sql語言的函數名(如:inteval,show)等是保留字。Oracle中保留字是可以作為表名和欄位名,並且不影響使用,但mysql中保留字是不能作為表名和欄位名,如果使用會報語法錯誤。
解決辦法,把sql語句中的保留字用『`'符號引起來,這個符號位於鍵盤的tab鍵上面;如果是欄位名還有另外一種方法tablename.欄位名。像這樣:
insert into tablename (id, `interval`) value(…..
或
insert into tablename (id, tablename.inteval) value(…..
3、自動增長類型的區別。
Oracle有sequence,mysql中沒有,但有auto_increment屬性。
解決辦法是把Oracle中sequence轉換成使用auto_increment屬性,某些情況可能還有一種辦法可以解決問題,新建一個獨立的表用來專門記錄自動增長型的數據。
4、數據類型的區別。
在mysql中沒有像oracle中的varchar2、number,mysql有與之對應的varchar、numeric,當然在oracle中沒有mysql的time類型。
解決辦法是替換。
5、索引長度限制的區別。
從MySQL 4.1.2開始,MyISAM和InnoDB表索引長度支持1000位元組,也就是說索引欄位的長度不能超過1000位元組,如果超過會報這樣的錯:
ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes。
如果是UTF-8編碼,相當於333個字元的長度(因為UTF8一個字元佔3個位元組)。Oracle的索引長度限制比mysql要寬松得多。
解決辦法:就不必要多說了,要麼改索引的定義,要麼改欄位的定義長度。
二、為了資料庫的兼容性我們應該注意些什麼。
資料庫的兼容性應該是資料庫設計應該重視的一個問題,因為有時候客戶存在已經在用的資料庫,並且
不希望同時維護兩個資料庫,這樣的話兼容多種資料庫還能成為產品的一個賣點。
作到資料庫的兼容性關鍵是遵守標准用法。
1、遵守標准用法,盡量不使用某種資料庫特有的用法。
如msyql的『`'符號的用法,再比如,很多人有這種用法,在使用oracle開發的時候創建sequence,往表中插數據之前先SELECT seq.nextval FROM DUAL;,然後把查詢得到的值作為value插入表中,這種用法沒法適應沒有sequence的資料庫,每個資料庫都有自
動增長型的用法,如果需要使用就應該完全地使用。
再舉個例子,不同的資料庫對分頁查詢作了擴展,postgresql有offset,limit,oracle就沒有。
2、保留字。
要求資料庫設計者盡量不使用保留字作表名和欄位名。也有很多人有這種用法,在表名和欄位名前加『_',
像這樣:create table _tablename ( _id integer)。這樣永遠不會出現保留字引起的問題。
3、避免資料庫大小寫敏感的問題。
選擇資料庫表名和欄位名採用大寫還是小寫,並且在資料庫的設計和編碼過程中完全統一。
當使用 Convert Oracle to Mysql 工具時,請注意「名稱轉換為大寫」這個選項的控制。
㈡ DM連接Access資料庫的問題
使用Provider=Microsft.Jet.OLEDB.4.0;Data Source=&Server.MapPath("")
㈢ oracle資料庫用imp命令導入資料庫時報1659的錯誤,怎麼解決
oracle在導入數據時報1659的錯誤的原因主要是資料庫表空間剩餘空間不足引起的。
分析原因
1、表空間剩餘空間不足。
使用下面語句,查看錶空間剩餘空間
selectUpper(f.tablespace_name)"表空間名",
d.tot_grootte_mb"表空間大小(M)",
d.tot_grootte_mb-f.total_bytes"已使用空間(M)",
to_char(round((d.tot_grootte_mb-f.total_bytes)/
d.tot_grootte_mb*100,2),'990.99')||'%'"使用比",
f.total_bytes"空閑空間(M)",
f.max_bytes"最大塊(M)"
from(selecttablespace_name,
round(sum(bytes)/(1024*1024),2)total_bytes,
round(max(bytes)/(1024*1024),2)max_bytes
fromsys.dba_free_space
groupbytablespace_name)f,
(selectdd.tablespace_name,
round(sum(dd.bytes)/(1024*1024),2)tot_grootte_mb
fromsys.dba_data_filesdd
groupbydd.tablespace_name)d
whered.tablespace_name=f.tablespace_name
orderbyf.tablespace_name;
表空間剩餘空間不足時,可以根據原資料庫表空間大小增加表空間。
altertablespace表空間名adddatafile'數據文件名'size數據文件大小;
2、剩餘表空間還很多。
使用下面語句查看原資料庫表表定義,找到initial_extent值大的表,將這些表的
創建語句導出後修改initial_extent值,在目標資料庫中創建後再導入數據,導入時
增加參數ignore=y。
selecttable_name,initial_extent
fromuser_tables
whereinitial_extentisnotnull
orderbyinitial_extentdesc
如果找不到原資料庫,可以使用
impuserid/userid@service_namefile=dmp文件名indexfile=index文件名rows=nfull=Y
命令將dmp文件中創建表的語句導入到indexfile文件中,查看indexfile如下:
REMCREATETABLE"TEST"."DM_KJKM_COPY"("KJZDMB_DM"VARCHAR2(100)
REM ENABLE,"KMID"NUMBER(20,0),"KMBM"VARCHAR2(100),"KMMC"
REMVARCHAR2(500),"KMQC"VARCHAR2(1000),"KMLB_DM"VARCHAR2(100),
REM ...
使用文本編輯工具,查找INITIAL將過大的初始值改為65536後,將REM去除後,在資料庫中創建後再使用exp導入數據,導入時增加參數ignore=y。
㈣ 如何把powerdesigner中的表直接導入資料庫
1、 打開PowerDesigner12,在菜單中按照如下方式進行操作file->Reverse Engineer->DataBase
點擊後,彈出 New Physical Data Model 的對話框,如下圖:
2、 在General選項卡中
Model name:模板名字,自己命名。
DMBMS :根據需要選擇,我選擇的是Microsoft SQL Server 2005
點確定後彈出 Database Reverse EngineeringOption 對話框
3、 Selection選項卡中,選中Using a data source選項
注意如果是第一次導入數據,需要你先自己配製ODBC數據源,方法如下:
1)點擊下面右側的資料庫連接按鈕,彈出 Connectto a Data Source 的對話框
2)選中 ODBC machine data source 選項,點擊 Modify按鈕右邊的 Configure 按鈕彈出Configure Data Connections
4、 在 ODBC Machine Data Sources選項卡下面的工具欄中點擊第二個資料庫配置按鈕(AddData Source(Ctrl+N)) 彈出創建新數據源窗口,選擇文件數據源,選擇相應的數據源驅動程序(我選SQl Server),點下一步,給數據源起個名字,選擇伺服器,下一步,輸入相應的密碼
㈤ 連接DM資料庫出現報錯,但是安裝DM資料庫帶的管理工具就可以連接
你好
你可以參考下網路文庫這篇關於DM資料庫鏈接的教程,看是否哪裡出問題了
http://wenku..com/link?url=_WWcPwjWINwNcu_
㈥ 達夢資料庫總是連接失敗怎麼解決
摘要 解決該問題方法:
㈦ dm資料庫參數個數大於2048怎麼解決
1、打開PHP.ini。找到 upload_max_filesize 、 memory_limit 、 post_max_size 這三個參數!
(在默認的情況下,php只允許最大的上傳數據為2M,也就是2048KB,而極限的最大使用內存memory_limit也僅為128M,Post的最大也為2M)
2、按您的伺服器的實際性能配置進行如下改動:(注意:以下是按我的伺服器性能和硬體配置進行的更改..)
upload_max_filesize = 8M (上傳最大極限設定為8M,這個應該足夠一般的文件WEB上傳了)
memory_limit = 512M (因為伺服器的內存為2GB,所以這里加到512M不過份吧,呵)
post_max_size = 8M (Post數據最大也設置為8MB,這個跟upload_max一樣)
3、改完之後,我重新啟動系統,再重新執行導入命令後:
Import has been successfully finished, 399 queries executed.
(顯示導入成功,有多少個請求處理成功…)
(備註:改完後當你在到phpMyadmin的導入命令行時,雖然(有時候可能會仍然顯示為:最大限制:2048KB/Max: 2,048KiB);但實際上你已經可以導入不超過8M的MySQL資料庫.sql導出的備份文件了! 另,改完php.ini後,別忘了重啟一下web服務或者是伺服器喲!重啟後升效!)
㈧ Dream Maker游戲引擎打開DM格式的工程文件提示「資料庫打開失敗2」是怎麼回事。
1.打開控制面板——管理工具——數據源(ODBC)。
2.在彈出的對話框中雙擊——MS Access Database.
㈨ linux導入oracle資料庫dm文件時卡在一張表上
源資料庫和目標資料庫必須運行在相同的硬體平台上。源資料庫與目標資料庫必須使用相同的字元集。
㈩ 我用dm連接資料庫 數據導入後 為什麼檢查網頁的時候就成了這個樣子了
我不清楚dm連接,但在asp.net網站設計中遇到過此類問題,你不妨試試:
1、先查看你的資料庫是否導入你的資料庫軟體里
2、查看你的sql連接語句,是否正確。