0

SQL*Loader を使用してデータをロードしていましたが、制御ファイルを作成するときにテーブル定義を使用し、誤って "version" 行に INTEGER データ型を残してしまいました。

そして、「バージョン」フィールド (データ型整数) に値 808594481 を挿入しました。

この値をどのように処理したか理解するのに苦労しています - 私はそれをリテラルとして取ったと仮定しています...しかし、それは各文字のASCII表現の合計ですか?

いいえ!

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

666 を返します (これは面白い話です)。

アスキー値を連結しますか?

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,x@gmail.com,x@gmail.com,"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,x7@gmail.com,x7@gmail.com,"JUVI Eastern Redcedar,Sapling","",45
4

1 に答える 1

0

808594481 を 32 ビットの 2 の補数エンコードでエンコードされるようにバイトに分割し、各バイトを ASCII エンコード文字として扱うと、バイト順によって「02,1」または「1,20」になります。おそらく、それらのいずれかで開始または終了する文字列を挿入し、コードとデータベースの間のレイヤーがそれを暗黙のうちに整数に変換しました。

于 2014-09-26T15:58:07.467 に答える