Zapis polskich literek w bazie danych US7ASCII z bazy EE8ISO8859P2 
 
Zapis polskich literek w bazie danych US7ASCII z bazy EE8ISO8859P2
Zobacz wiadomo¶ci
 
Cytat
A gdyby tak siê wedrzeæ na umys³ów górê, / Gdyby stan±æ na ludzkich my¶li piramidzie, / I przebiæ czo³em przes±dów chmurê, / I byæ najwy¿sz± my¶l± wcielon±. . . Juliusz S³owacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Zapis polskich literek w bazie danych US7ASCII z bazy EE8ISO8859P2



stacho@tls.pl - 06-02-2007 00:04
Zapis polskich literek w bazie danych US7ASCII z bazy EE8ISO8859P2
  Witam,

Mamy dwie bazy danych. Jedna skonfigurowana jako EE8ISO8859P2, druga
jako US7ASCII (NLS_CHARACTERSET). Dla obu mamy NLS_LANGUAGE POLISH i
NLS_TERRITORY
POLAND.

Obie to Oracle 9.2.0.6.0. Z bazy EE8ISO8859P2 mamy dblink do bazy
US7ASCII.

Chcemy zapisywaæ polskie znaczki z poziomu bazy EE8ISO8859P2 w bazie
US7ASCII. Niestety przy próbie zapisu Oracle automatycznie konwertuje
polskie znaczki z "£" -> "L", "¡" -> "A" itp. Przyk³adowo:

UPDATE table@dblink SET name = '¡±ÊêÓó¡±£³¯¿¬¼ÆæÑñ' WHERE
customer_id=1000;

Powoduje zapisanie w bazie ci±gu "AaEeOoAaLlZzZzCcNn".

Uda³o mi siê znale¼æ trikowe rozwi±zanie, które dzia³a, ale wymaga
dodania kodu dla ka¿dej operacji i pola. Nie wydaje siê to ani zbyt
eleganckie, ani wygodne (poni¿ej kod w PL/SQL). Pytanie:
Czy da siê ten problem rozwi±zaæ zmieniaj±c ustawienia sesji/bazy
danych, bez rêcznego modyfikowania ka¿dej operacji np. wy³±czaj±c
automatyczn± konwersjê znaków ?

DECLARE
dataToSave VARCHAR(2000) := ' ¡±ÊêÓó¡±£³¯¿¬¼ÆæÑñ.';
rawData RAW(2000);

BEGIN

SELECT utl_raw.CAST_TO_RAW(dataToSave) INTO rawData FROM DUAL;
SELECT utl_raw.CONVERT(rawData, 'POLISH_POLAND.EE8MSWIN1250',
'polish_poland.ee8iso8859p2' ) INTO rawData FROM dual;

UPDATE table@dblink SET name =
utl_raw.cast_to_varchar2@bscs.world(rawData)
WHERE customer_id=1000;

END;

Pozdrawiam
Stacho





Lucyna Witkowska - 07-02-2007 00:05

  stacho@tls.pl napisa³:
> Mamy dwie bazy danych. Jedna skonfigurowana jako EE8ISO8859P2, druga
> jako US7ASCII (NLS_CHARACTERSET). Dla obu mamy NLS_LANGUAGE POLISH i
> NLS_TERRITORY
> POLAND.
(...)
> Czy da siê ten problem rozwi±zaæ zmieniaj±c ustawienia sesji/bazy
> danych, bez rêcznego modyfikowania ka¿dej operacji np. wy³±czaj±c
> automatyczn± konwersjê znaków ?

Jedyne ca³o¶ciowe rozwi±zanie problemu to zmiana CHARACTERSET w bazie z
US7ASCII na inny pozwalajacy na prawid³owe trzymanie polskich znaków
(EE8ISO8859P2, EE8MSWIN1250, UTF8 itd).

Nawet jesli za pomoca trikow wpisze sie do bazy
US7ASCII znaki ± - to bêd± one traktowane tam jako znaki obce i na
kolumnach z tymi znakami nie bed± dzialac poprawnie ani ORDER BY,
ani funkcje UPPER, LOWER itd.

Pozdrowienia,
LW
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [laik]Jak =?ISO-8859-2?Q?stworzy=E6/zaczac_tworzyc__ma=B3=B1?==?ISO-8859-2?Q?__baz=EA_danych_na_potrzeby_www=3F?= [mysql] przenoszenie danych =?ISO-8859-2?Q?mi=EAdzy_tabelami_?==?ISO-8859-2?Q?w_r=F3=BFnych_bazach?= Ksiazka - "Podstawowy =?ISO-8859-2?Q?wyk=B3ad_z_system=F3w_?==?ISO-8859-2?Q?baz_danych=22?= Zrywanie =?ISO-8859-2?Q?po=B3aczen_z_baza_danych_-_pos?==?ISO-8859-2?Q?tgresql_=3C-=3E_odbc?= =?iso-8859-2?Q?=5BSQL_Server_2000=5D_uprawnienienia_do_u=BFyw ania_widoku_?==?iso-8859-2?Q?opartego_na_tabeli_z_innej_bazy?= Dwie bazy czy dwie tabele? [PHP i MySQL] Wstawianie =?ISO-8859-2?Q?rekord=F3w_do_bazy_?==?ISO-8859-2?Q?a_z=B3e_kodowanie?= [mssql] insert do tabeli na podstawie danych z innej tabeli =?ISO-8859-2?Q?=5Bmysql=5D_synchronizacja_struktury_bazy_?==? ISO-8859-2?Q?lokalnej_ze_zdaln=B1?= [oracle] Baza danych do kursy Introduction to Oracle9i:PL/SQL ? Sk±d j± pobraæ ?
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • quentinho.opx.pl
  • Cytat

    Decede mihi sole - nie zas³aniaj mi s³onca.
    Gdy kogo¶ kochasz, jeste¶ jak stworzyciel ¶wiata - na cokolwiek spojrzysz, nabiera to kszta³tu, wype³nia siê barw±, ¶wiat³em. Powietrze przytula siê do ciebie, choæby by³ mróz, a ty masz w sobie tyle rado¶ci, ¿e musisz j± rozdawaæ woko³o, bo siê w tobie nie mie¶ci
    Hoc fac - tak czyñ.
    A tergo - od ty³u; z ty³u.
    I czarne w³osy posiwiej±. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com