Гиббериш подал значения при загрузке данных с помощью Oracle SQL Loader (sqlldr) - PullRequest
0 голосов
/ 21 октября 2018

Использование

sqlldr

для загрузки данных в таблицу оракулов не приводит к каким-либо ошибкам, но значения полей являются бессмысленными.не все значения, конечно, только значения, которые были в персидском (арабском) формате.Я уже прочитал много вопросов здесь, но не смог решить проблему, наиболее подходящей темой для этой проблемы были: [ Нечитаемый символ в сгенерированном файле sqlplus , хотя значения в моем случае - это не вопросительный знак, а что-то вроде:Âåä или äÇ ãÔÎÕ

Также играл с переменной окружения NLS_LANG, но это было безрезультатно.

Созданы разные базы данных оракулов с разными наборами символов, это также было безрезультатно.

Я новичок в оракуле, поэтому весьма вероятно, что я делаю ошибку новичка при создании базы данных и настройке набора символов или что-то еще, если честно, я понятия не имею.но попробовал много ответов от пользователей, и вот я здесь.

Я загрузил схему таблицы и файл расширения Ctl, чтобы воспроизвести проблему, ссылка на связанные файлы находится по этой ссылке: [https://www.dropbox.com/sh/ejxvast0ruioksk/AABXhjujqzhRpuMVjl7V-zxUa?dl=0][1]

1 Ответ

0 голосов
/ 21 октября 2018

Всего у вас есть три набора символов или кодировки.

  1. Какая кодировка вашего файла?Проверьте параметры сохранения редактора или приложения, создавшего файл.
  2. Набор символов вашего окна командной строки cmd.exe, называемый "кодовая страница".Вы можете опросить (или изменить) с помощью команды chcp
  3. Набор символов вашей базы данных.

1) и 2) должны быть одинаковыми.Используйте команду chcp, чтобы установить их равными (или изменить настройки в вашем редакторе)

3) может отличаться, но набор символов должен поддерживать персидские / арабские символы, так что, скорее всего, AL32UTF8, который в настоящее время используется по умолчанию.

Используйте значение NLS_LANG, чтобы указать базе данных, какой набор символов используется для 1) и 2), пример

C:\>chcp 1256
Aktive Codepage: 1256.

C:\>set NLS_LANG=.AR8MSWIN1256

C:\>sqlldr ...

. Вы можете получить список кодовых страниц и символов Oracle.установить с этим запросом:

SELECT VALUE AS ORACLE_CHARSET, UTL_I18N.MAP_CHARSET(VALUE) AS IANA_NAME
FROM V$NLS_VALID_VALUES
WHERE PARAMETER = 'CHARACTERSET';

А вот список Идентификаторов кодовой страницы

См. также OdbcConnection, возвращая китайские иероглифы как "?" чтобы получить более подробную информацию.

...