Я пытаюсь загрузить локализованные строки из CSV-файла Unicode (в кодировке UTF8) с помощью SQL Loader в базу данных Oracle. Я перепробовал все виды комбинаций, но, похоже, ничто не дает мне результата, который я ищу, - чтобы специальные греческие символы, такие как (Δ), не конвертировались в Î »или ¿.
Определение моей таблицы выглядит так:
CREATE TABLE "GLOBALIZATIONRESOURCE"
(
"RESOURCETYPE" VARCHAR2(255 CHAR) NOT NULL ENABLE,
"CULTURE" VARCHAR2(20 CHAR) NOT NULL ENABLE,
"KEY" VARCHAR2(128 CHAR) NOT NULL ENABLE,
"VALUE" VARCHAR2(2048 CHAR),
"DESCRIPTION" VARCHAR2(512 CHAR),
CONSTRAINT "PK_GLOBALIZATIONRESOURCE" PRIMARY KEY ("RESOURCETYPE","CULTURE","KEY") USING INDEX TABLESPACE REPSPACE_IX ENABLE
)
TABLESPACE REPSPACE;
Я попробовал следующие конфигурации в моем управляющем файле (и фактически каждую перестановку, о которой я мог думать)
load data
TRUNCATE
INTO TABLE "GLOBALIZATIONRESOURCE"
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
"RESOURCETYPE" CHAR(255),
"CULTURE" CHAR(20),
"KEY" CHAR(128),
"VALUE" CHAR(2048),
"DESCRIPTION" CHAR(512)
)
load data
CHARACTERSET UTF8
TRUNCATE
INTO TABLE "GLOBALIZATIONRESOURCE"
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
"RESOURCETYPE" CHAR(255),
"CULTURE" CHAR(20),
"KEY" CHAR(128),
"VALUE" CHAR(2048),
"DESCRIPTION" CHAR(512)
)
load data
CHARACTERSET UTF16
TRUNCATE
INTO TABLE "GLOBALIZATIONRESOURCE"
FIELDS TERMINATED BY X'002c' OPTIONALLY ENCLOSED BY X'0022'
TRAILING NULLCOLS
(
"RESOURCETYPE" CHAR(255),
"CULTURE" CHAR(20),
"KEY" CHAR(128),
"VALUE" CHAR(2048),
"DESCRIPTION" CHAR(512)
)
При первых двух параметрах символы Юникода не кодируются, а отображаются как перевернутые знаки вопроса.
Если я выберу последний вариант, UTF16, то получаю следующую ошибку, даже если все мои данные в моих полях намного короче указанной длины.
Field in data file exceeds maximum length
Кажется, что каждая возможная комбинация конфигураций файла ctl (даже установка порядка байтов на маленький и большой) не работает правильно. Может ли кто-нибудь привести пример конфигурации (структура таблицы и файл CTL), которая правильно загружает данные Unicode из CSV? Любая помощь будет принята с благодарностью.
Примечание: я уже был на http://docs.oracle.com/cd/B19306_01/server.102/b14215/ldr_concepts.htm, http://docs.oracle.com/cd/B10501_01/server.920/a96652/ch10.htm и http://docs.oracle.com/cd/B10501_01/server.920/a96652/ch10.htm.