2014-09-26 28 views
0

我正在使用SQL * Loader加載數據,並且在製作控制文件時,我使用了表格定義,並且意外地將INTEGER數據類型留在了「版本」行上。爲什麼SQL * Loader在使用INTEGER數據類型時加載808594481?

並在「版本」字段(數據類型爲整數),它插入808594481.

我有一個很難理解它是如何處理該值的價值 - 我假設它就把它作爲文字...但是每個字母的ASCII表示的總和?

NOPE!

SELECT ASCII('I')+ascii('N')+ASCII('T')+ASCII('E')+ASCII('G')+ASCII('E')+ASCII('G')+ASCII('E')+ASCII('R') 
    FROM SYS.DUAL 

返回666(其中,btw很搞笑)。

concatenate ascii values?

SELECT ASCII('I')||ascii('N')||ASCII('T')||ASCII('E')||ASCII('G')||ASCII('E')||ASCII('G')||ASCII('E')||ASCII('R') 
    FROM SYS.DUAL 

回報737884697169716982

我希望有人在那裏知道答案。

這是實際的控制文件:

OPTIONS (SKIP=1) 
LOAD DATA 
APPEND into table THETABLE 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
(id , 
parent_id , 
record_id , 
version INTEGER, 
created_at , 
updated_at , 
created_by , 
updated_by , 
species_and_cohort , 
species_and_cohort_count) 

表DDL:

create table THETABLE 
(
    id    VARCHAR2(36), 
    parent_id  VARCHAR2(36), 
    record_id  VARCHAR2(36), 
    version     INTEGER, 
    created_at    VARCHAR2(25), 
    updated_at    VARCHAR2(25), 
    created_by    VARCHAR2(50), 
    updated_by    VARCHAR2(50), 
    species_and_cohort  VARCHAR2(150), 
    species_and_cohort_other VARCHAR2(150), 
    species_and_cohort_count NUMBER 
) 

數據:

id,parent_id,record_id,version,created_at,updated_at,created_by,updated_by,species_and_cohort,species_and_cohort_other,species_and_cohort_count 
60D90F54-C5F2-47AF-951B-27A424EAE8E3,f9fe8a3b-3470-4caf-b0ba-3682a1c79731,f9fe8a3b-3470-4caf-b0ba-3682a1c79731,1,2014-09-23 21:02:54 UTC,2014-09-23 21:02:54 UTC,[email protected],[email protected],"PRCA Cherrylaurel,Sapling","",5 
FC6A2120-AA0B-4238-A2F6-A6AEDD9B8202,f9fe8a3b-3470-4caf-b0ba-3682a1c79731,f9fe8a3b-3470-4caf-b0ba-3682a1c79731,1,2014-09-23 21:03:02 UTC,2014-09-23 21:03:02 UTC,[email protected],[email protected],"JUVI Eastern Redcedar,Sapling","",45 
+0

你插入的數據是什麼以及表的DDL是什麼(所以我們可以試試)? – Ben 2014-09-26 15:50:06

+0

完成。感謝您的建議。 – 2014-09-26 18:13:44

回答

0

如果拆分808594481成字節,因爲它會在被編碼32位二進制補碼編碼,並將每個字節視爲ASCII編碼字符,則會得到「02,1」或「1,20」d依賴於字節順序。您可能插入了一個以其中一個開頭或結尾的字符串,並且您的代碼和數據庫之間的某個層將其默認轉換爲整數。

+0

.csv文件中的值爲「1」 – 2014-09-26 18:14:38

+0

我認爲答案是INTEGER這個詞以這種方式編碼......遠遠超出正常工作日的範圍,我不能接受。謝謝。 – 2014-09-26 18:56:57

+0

我看到序列「1,2014-09-23 21:02:54 UTC」在您的數據中。你確定逗號分割是按照你的意圖工作嗎? – recursive 2014-09-26 19:31:39

相關問題