Próbuję zaimportować eksport Oracle 11 do Oracle 11 XE.
Otrzymuję następujące wiadomości:
import w XE fehlerhaft import wykonany w zestawie znaków WE8MSWIN1252 i zestawie znaków AL16UTF16 NCHAR
serwer importu używa zestawu znaków AL32UTF8 (możliwa konwersja zestawu znaków)
Wszelkie pomysły, w jaki sposób mogę zaimportować ten zrzut do Oracle 11 XE?
Edytować:
Biorąc pod uwagę stół
CREATE TABLE BDATA.Artikel(
Key VARCHAR2(3) NOT NULL,
Name VARCHAR2(60) NOT NULL,
Abkuerzung VARCHAR2(5) NOT NULL
);
Mam takie błędy
IMP-00019: row rejected due to ORACLE error 12899
IMP-00003: ORACLE error 12899 encountered
ORA-12899: value too large for column "BDATA"."ARTIKEL"."ABKUERZUNG" (actual: 6, maximum: 5)
Column 1 ABL
Column 2 Aufbewahrungslösung
Column 3 AfbLö
W imporcie brakuje niektórych wierszy.
Nie masz wyboru zestawu znaków w XE, więc nie możesz go zmienić, aby pasował do bazy danych, którą próbujesz zaimportować. Czy praktyczna byłaby migracja źródłowej bazy danych przed eksportem?
Import powinien działać, ale konwersja zestawu znaków może oznaczać, że niektóre kolumny tekstowe ze znakami nie-ascii nie będą wyglądały tak samo po imporcie. A wiersze można odrzucić, jeśli są zbyt długie w nowym zestawie znaków.
W twoim przypadku konwertujesz na UTF8, co oznacza, że jeden bajt może rosnąć podczas konwersji do 2 ( lub więcej teoretycznie ). Może być konieczne zwiększenie rozmiaru kolumny przed eksportem lub dostosowanie schematu docelowego i zaimportowanie danych w osobnym kroku. Zobacz tutaj inne możliwe problemy z obcinaniem danych
źródło
Najłatwiejszy sposób: (Niezbędne zamknięcie) :
Najpierw połącz jako sysdba:
Następnie uruchom następujący skrypt:
To działało dla mnie w wersji Oracle 12c Standard Two Edition
Zaczerpnięte z: http://www.blogdelpibe.com/2015/05/como-solucionar-el-error-ora-12899.html
źródło
To zadziałało dla mnie. Zamiast tego:
Wypróbuj coś takiego w bash:
Zmienia się co
col1 VARCHAR2(n)
docol1 VARCHAR2(n CHAR)
linii począwszy odCREATE TABLE
. Możesz także zmienićdata.dmp
przed uruchomieniem imp, jeśli nie<(...)
możesz na przykład w swojej powłoce:... ale nie jest to konieczne w bash i coś może pójść nie tak podczas konwersji lub tworzenia kopii zapasowej, jak stwierdził
-i.bk
.źródło