Как переносить данные между разными базами данных? - PullRequest
1 голос
/ 28 августа 2009

У нас есть такая база данных оракула, которая содержит символ "Традиционный китайский" и английский, а среда:

PARAMETER   VALUE
NLS_LANGUAGE    AMERICAN
NLS_TERRITORY   AMERICA
NLS_CURRENCY    $
NLS_ISO_CURRENCY    AMERICA
NLS_NUMERIC_CHARACTERS  .,
NLS_CHARACTERSET    WE8PC850
NLS_CALENDAR    GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE   AMERICAN
NLS_SORT    BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT    DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT  HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY   $
NLS_COMP    BINARY
NLS_LENGTH_SEMANTICS    BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET  UTF8
NLS_RDBMS_VERSION   9.2.0.4.0

И я экспортирую все данные в этой базе данных в файл * .sql в кодировке «ansi», и когда я открываю его на том же компьютере, все китайские символы повреждены.

А когда я импортирую его в другого оракула, а среда выглядит так:

> NLS_LANGUAGE|AMERICAN
> NLS_TERRITORY|AMERICA NLS_CURRENCY|$
> NLS_ISO_CURRENCY|AMERICA
> NLS_NUMERIC_CHARACTERS|.,
> NLS_CHARACTERSET|WE8MSWIN1252
> NLS_CALENDAR|GREGORIAN
> NLS_DATE_FORMAT|DD-MON-RR
> NLS_DATE_LANGUAGE|AMERICAN
> NLS_SORT|BINARY
> NLS_TIME_FORMAT|HH.MI.SSXFF AM
> NLS_TIMESTAMP_FORMAT|DD-MON-RR
> HH.MI.SSXFF AM
> NLS_TIME_TZ_FORMAT|HH.MI.SSXFF AM TZR
> NLS_TIMESTAMP_TZ_FORMAT|DD-MON-RR
> HH.MI.SSXFF AM TZR NLS_DUAL_CURRENCY|$
> NLS_COMP|BINARY
> NLS_LENGTH_SEMANTICS|BYTE
> NLS_NCHAR_CONV_EXCP|FALSE
> NLS_NCHAR_CHARACTERSET|AL16UTF16
> NLS_RDBMS_VERSION|10.2.0.1.0

Все китайские иероглифы все еще повреждены. Может ли кто-нибудь дать мне какие-либо советы?

И у меня все еще есть другая проблема, почему когда-нибудь мы можем сохранить "традиционный китайский" или "упрощенный китайский" в текстовый файл с кодировкой "ANSI", и символы не будут повреждены. Но когда-нибудь это будет ... почему может кто-нибудь объяснить все эти странные вещи?

Заранее спасибо!

1 Ответ

0 голосов
/ 28 августа 2009

причина, по которой китайские символы «испорчены», заключается просто в том, что они отсутствуют в наборе символов «ANSI» (windows-1252). Этот набор символов включает только латинские символы.

Случайно вы можете иногда заставить их распознаваться некоторыми приложениями, потому что некоторые приложения достаточно умны, чтобы понять, что вы использовали неправильный набор символов (т.е. они предполагают, что вы не правы, это пример блокнота, например) , В вашем случае, однако, вы должны либо:

  • используйте набор символов, который включает китайские символы, например: UTF-8,
  • настроить ваше клиентское приложение на использование набора символов, включающего китайские символы (NLS_LANG=AMERICAN_AMERICA.UTF8), и использовать утилиту, которая сделает вашу работу (SQL * Loader, ссылка на базу данных ...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...