Загрузить текст в досовской кодировке, используя sqlldr.

ivan *
Дата: 23.02.2007 15:22:47
Хочу загрузить тексты в досовской кодировке. Использую sqlldr:
load data
infile *
into table doc
(iddoc "doc_seq.nextval",
filename position(1:255),
text lobfile(filename) terminated by eof )
begindata
-- дальше указаны текстовые файлы, содержимое которых нужно поместить в поле типа clob
Ну и почему то не получается. В таблице вместо русских символов - ????.
Стоит 10gR1, набор символов базы данных CL8MSWIN1251.
Kovalchuk Vitaly V
Дата: 23.02.2007 15:25:19
ivan *
Хочу загрузить тексты в досовской кодировке. Использую sqlldr:
load data
infile *
into table doc
(iddoc "doc_seq.nextval",
filename position(1:255),
text lobfile(filename) terminated by eof )
begindata
-- дальше указаны текстовые файлы, содержимое которых нужно поместить в поле типа clob
Ну и почему то не получается. В таблице вместо русских символов - ????.
Стоит 10gR1, набор символов базы данных CL8MSWIN1251.

Ну конечно не получится. Кодировка RU8PC866 спасёт юного Джидая.
LOAD DATA 
characterset 'RU8PC866' 
INFILE ....
Wladislaw
Дата: 23.02.2007 15:25:25
А на клиенте какая кодировка?
semenar
Дата: 23.02.2007 15:48:37
ivan *
Хочу загрузить тексты в досовской кодировке. Использую sqlldr:
load data
infile *
into table doc
(iddoc "doc_seq.nextval",
filename position(1:255),
text lobfile(filename) terminated by eof )
begindata
-- дальше указаны текстовые файлы, содержимое которых нужно поместить в поле типа clob
Ну и почему то не получается. В таблице вместо русских символов - ????.
Стоит 10gR1, набор символов базы данных CL8MSWIN1251.


Повесть триггер на таблицу, BEFORE INSERT ON
CONVERT(:NEW.PL, 'CL8MSWIN1251', 'RU8PC866');
Самый простой способ. Или прописать convert в управляющем файле.
ivan *
Дата: 23.02.2007 16:04:55
Kovalchuk Vitaly V
Кодировка RU8PC866 спасёт юного Джидая.

Попробовал. Все равно кракозябры.
Вот лог:

SQL*Loader: Release 10.1.0.2.0 - Production on Пт Фев 23 15:54:18 2007

Copyright (c) 1982, 2004, Oracle.  All rights reserved.

Control File:   !doc.load
Character Set RU8PC866 specified for all input.

Data File:      !doc.load
  Bad File:     !doc.bad
  Discard File:  none specified
 
 (Allow all discards)

Number to load: ALL
Number to skip: 0
Errors allowed: 50
Bind array:     64 rows, maximum of 256000 bytes
Continuation:    none specified
Path used:      Conventional

Table DOC, loaded from every logical record.
Insert option in effect for this table: INSERT

   Column Name                  Position   Len  Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
IDDOC                               FIRST     1           CHARACTER            
    SQL string for column : "doc_seq.nextval"
FILENAME                            1:255   255           CHARACTER            
TEXT                              DERIVED     *  EOF      CHARACTER            
    Dynamic LOBFILE.  Filename in field FILENAME
    Character Set RU8PC866 specified for all input.


Table DOC:
  111 Rows successfully loaded.
  0 Rows not loaded due to data errors.
  0 Rows not loaded because all WHEN clauses were failed.
  0 Rows not loaded because all fields were null.


Space allocated for bind array:                  16768 bytes(64 rows)
Read   buffer bytes: 1048576

Total logical records skipped:          0
Total logical records read:           111
Total logical records rejected:         0
Total logical records discarded:        0

Run began on Пт Фев 23 15:54:18 2007
Run ended on Пт Фев 23 15:54:25 2007

Elapsed time was:     00:00:07.74
CPU time was:         00:00:00.61
ivan *
Дата: 23.02.2007 16:07:49
Wladislaw
А на клиенте какая кодировка?

Я, когда нужно использовать sqlplus или sqlldr, делаю в cmd
set nls_lang=russian_cis.ru8pc866
Wladislaw
Дата: 23.02.2007 16:16:19
А приатач кусок файла данных? Что бы посмотреть что там точно досовская кодировка :)
ivan *
Дата: 23.02.2007 16:28:20
semenar
Повесть триггер на таблицу, BEFORE INSERT ON
CONVERT(:NEW.PL, 'CL8MSWIN1251', 'RU8PC866');
Самый простой способ. Или прописать convert в управляющем файле.

Попробовал. Получилось. Спасибо.
Осталось узнать, как convert прописать в управляющем файле, потому что так красивее будет, чем триггер вешать.
ivan *
Дата: 23.02.2007 19:23:01
Оказалось, что достаточно перед вызовом sqlldr установить
set NLS_LANG=RUSSIAN_CIS.RU8PC866
chcp 866
Если было установлено
set NLS_LANG=RUSSIAN_CIS.CL8MSWIN1251
chcp 1251
,то файлы в досовской кодировке загружаются неправильно.