Wątek przeniesiony 2023-05-22 08:45 z Webmastering przez Riddle.

Import z tabeli po nazwie

0

Witajcie,
Mam tabelę (TABELA1) w której mam pole GD_PR_ID (FK do innej TABELA2). Oczywiście jest to pole typu NUMBER natomiast w pliku CSV mam nazwę (TABELA2.NAZWA). Chciałbym teraz zgodnie z tym co znalazłem tutaj:

zrobić import po nazwie i z lookup pobrać TABELA2.PR_ID i aby to się podstawiło przy imporcie do TABELA1.GD_PR_ID.

Próbowałem to wykonać 1 do 1 tak jak to jest na powyższym filmie ale coś mi nie działa. Cały czas dostaję komunikat ORA-01722: niepoprawna liczba co oznacza mniej więcej tyle, że do tej kolumny GD_PR_ID podstawia mi wartość tekstową z pliku zamiast TABELA2.PR_ID.

Ktoś ma pomysł jak to skonfigurować poprawnie?

0

Zrobił bym prostą apkę w dowolnym narzędziu obsługującym Oracla, która zaczyta dane z CSV i zapakuje do bazy

0

Jeśli to jednorazowa akcja, to użyj SQL Developera do importu tego CSV do dodatkowej tabeli, gdzie będzie ta NAZWA. Potem insert as select do docelowej tabeli z podmianą nazwy na stosowny ID. Jeśli nie ma tam milionów rekordów to możesz użyć podzapytania zwracającego wartość, żeby wyznaczyć ten ID.
Np.

insert into TABELA1 (GD_PR_ID, kol2, kol3, ...)
select (select t2.ID from TABELA2 t2 where t2.nazwa = t3.nazwa), t3.kol2, t3.kol3, ...
from tmp_tabela_z_csv t3;

Warunkiem jest, żeby to podzapytanie zwracało unikalną, jedną wartość (tj. gdy NAZWA jest unikalna).
Możesz też po prostu zrobić JOINa w tym zapytaniu, żeby wyznaczyć ten ID (uważając, żeby nie zduplikować rekordów - ta sama zasada, złączenie tylko z jednym rekordem tabeli, z której wyciągasz ID).

0

Dobra poradziłem sobie z obejściem ... stworzyłem tabele na podstawie tego Excela potem data leader i stronę z importem na podstawie tego Excela, a na końcu odpalam pakiet w którym juz sobie robie co potrzebuje. Trochę dookoła ale dziala

1 użytkowników online, w tym zalogowanych: 0, gości: 1