我最近遇到了一個問題,那就是我們正在運行數據遷移腳本,通過Oracle DBLink將數據從SQL Server移動到Oracle 10g。在我們的Oracle生產環境中運行腳本之前,一切正常。對於在SQL Server中定義爲tinyint的某些列,我們發現SQL Server數據庫中高於127的值現在爲負值(比原始值小256)。爲什麼腳本在開發和測試數據庫中工作,但不在生產中?當我從SQL Server中導入一個tinyint列到Oracle 10g時,爲什麼我會得到負值?
0
A
回答
4
我在問和回答我自己的問題,因爲Google和StackOverflow無法幫助我解決這個問題,至少在我使用的搜索條件方面。在我們開始研究時,我們發現SQL Server將tinyint視爲無符號字節(0到255),而Oracle將其視爲有符號字節(-128到127)。但是我們導入了NUMBER(3)列,這是合適的。編寫數據遷移腳本的人需要使用Oracle的來編號函數以讀取SQL Server tinyint列出於某種原因。因此,如果您在我們的開發和測試環境中運行它,則此查詢將在第二列中返回一些好奇的字符,但它在我們的生產環境中的兩列中都返回相同的負數。
SELECT to_number("SomeTinyIntColumn"), "SomeTinyIntColumn"
FROM MySQ[email protected]
我們最終發現,它在開發和測試環境中工作的原因是因爲字符集是UTF-8那裏,但在生產中,這是一個西歐8位字符集:
SELECT value$ FROM sys.props$ WHERE name = 'NLS_CHARACTERSET';
-- Dev and Test: AL32UTF8
-- Prod: WE8ISO8859P1
如此看來,閱讀的SQL Server TINYINT列通過DBLINK一個UTF-8字符和轉換,爲一個Oracle NUMBER(3)列的作品,您使用的是UTF-8字符集提供爲您的Oracle數據庫。如果DBLink自己處理了轉換(使得轉換爲不必要的轉換),但它看起來並不知道如何處理SQL Server tinyint。
我希望這有助於別人有一天!
相關問題
- 1. 爲什麼我得到一個負值?
- 2. 從SQL Server導出表格導入到Oracle 10g
- 3. 當我從TreeMap打印出值時,爲什麼會得到空值列表?
- 4. 爲什麼我會得到一個GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT?
- 5. 爲什麼我會得到一個java.nio.BufferOverflowException
- 6. 當我點擊一個EditTextCell時,爲什麼我會得到一個JavascriptException「no method'focus'」?
- 7. 爲什麼我會得到一個值回從Long.parseUnsignedLong時,我不應該
- 8. 爲什麼我得到一個空值?
- 9. 爲什麼我會得到「UserWarning:Module dap已經從None導入...」
- 10. 當我檢查空值時,爲什麼會得到NullReferenceException?
- 11. 爲什麼我無法從PHP程序連接到Oracle 10g?
- 12. 當我從春天得到一顆豆子時,爲什麼我會變空?
- 13. 爲什麼我會得到空陣列?
- 14. 當我嘗試從一個MySQL表中插入值到另一個時,爲什麼我會在'where子句'中得到錯誤「未知列'comp.id'?
- 15. 爲什麼當我在SQL Server做SELECT..INSERT做我得到這個錯誤
- 16. 爲什麼我會得到一個空光標sql lite
- 17. 爲什麼當我從webservice導入.discomap時,它會得到一個Array而不是List?
- 18. 爲什麼我會得到這個StackOverFlowException
- 19. 爲什麼我會得到這個ValueError?
- 20. 爲什麼我會得到這個IndexOutofBoundsexception?
- 21. 爲什麼我得到當我試圖插入一棵樹*
- 22. 將大量數據從Oracle 10G導出到SQL Server 2005
- 23. 爲什麼我會得到一個空的列表?
- 24. 當我嘗試NSLog iPad的方向時,爲什麼我會得到整數值?
- 25. 當我導入文本文件導入R,我得到追加到第一列
- 26. 爲什麼我會得到:java.lang.UnsatisfiedLinkError中
- 27. 當我嘗試將Json導入到SQLite時,爲什麼會收到Uncaught TypeError?
- 28. 爲什麼我們不能得到一個特定的負數
- 29. 爲什麼我傳遞一個url到webview時會得到一個NullPointerExeption?
- 30. 我得到一個PHP錯誤,我無法得到爲什麼我得到它