konto usunięte

Temat: sql loader i plik kontrolny

W oracle'u jest takie narzędzie jak sql loader. Przyjmuje ono pewne parametry tj. nazwę użytkownika, serwer, plik kontrolny i plik z którego ma ładować dane. W moim przypadku jest to plik CSV. Mam dość dziwną przypadłość kiedy podam za dużo danych w pliku CSV niż jest to wymagane to sql loader mimo to laduje (chociaż chyba nie powinien). Co zrobić by tych danych nie ładował i wyrzucił błąd? Wywaliłem z definicji pliku trailing nullcols i sądziłem, że to pomoże. Niestety to pomaga jeśli jest za mało danych...co zrobić jak jest za dużo? Jakieś sugestie?

z góry dzięki i pozdrawiam wszystkich
Dawid Glowacki

Dawid Glowacki BI/DW/ETL Consultant

Temat: sql loader i plik kontrolny

Rafał K.:
W oracle'u jest takie narzędzie jak sql loader. Przyjmuje ono pewne parametry tj. nazwę użytkownika, serwer, plik kontrolny i plik z którego ma ładować dane. W moim przypadku jest to plik CSV. Mam dość dziwną przypadłość kiedy podam za dużo danych w pliku CSV niż jest to wymagane to sql loader mimo to laduje (chociaż chyba nie powinien). Co zrobić by tych danych nie ładował i wyrzucił błąd? Wywaliłem z definicji pliku trailing nullcols i sądziłem, że to pomoże. Niestety to pomaga jeśli jest za mało danych...co zrobić jak jest za dużo? Jakieś sugestie?

z góry dzięki i pozdrawiam wszystkich

Zakładam że pod terminem za dużo danych masz na myśli 'większą ilość kolumn w wierszach niż zakłada plik kontrolny sqlldr'.

Nie znam żadnej opcji w sqlldr, która to obsłuży natomiast jeżeli taka walidacja naprawde jest konieczna, najłatwiej chyba zrobić to przed załadowaniem np sprawdzając czy poniższa komenda coś wypluje:
# cut -f5- -d, < data.csv

PS Zauważ że podanie większej ilości kolumn niż jest to potrzebne nie jest traktowane jako błąd, ponieważ po prostu są one skipowane. Jest to użyteczne np. w momencie gdy stara wersja kodu dostaje nową wersje pliku (z większą ilością atrybutów) a okazuje się że nadal wszystko działa...

konto usunięte

Temat: sql loader i plik kontrolny

Dawid Glowacki:
Rafał K.:
W oracle'u jest takie narzędzie jak sql loader. Przyjmuje ono pewne parametry tj. nazwę użytkownika, serwer, plik kontrolny i plik z którego ma ładować dane. W moim przypadku jest to plik CSV. Mam dość dziwną przypadłość kiedy podam za dużo danych w pliku CSV niż jest to wymagane to sql loader mimo to laduje (chociaż chyba nie powinien). Co zrobić by tych danych nie ładował i wyrzucił błąd? Wywaliłem z definicji pliku trailing nullcols i sądziłem, że to pomoże. Niestety to pomaga jeśli jest za mało danych...co zrobić jak jest za dużo? Jakieś sugestie?

z góry dzięki i pozdrawiam wszystkich

Zakładam że pod terminem za dużo danych masz na myśli 'większą ilość kolumn w wierszach niż zakłada plik kontrolny sqlldr'.

tak w rzeczy samej o to mi chodziło
Nie znam żadnej opcji w sqlldr, która to obsłuży natomiast jeżeli taka walidacja naprawde jest konieczna, najłatwiej chyba zrobić to przed załadowaniem np sprawdzając czy poniższa komenda coś wypluje:
# cut -f5- -d, < data.csv
>
PS Zauważ że podanie większej ilości kolumn niż jest to potrzebne nie jest traktowane jako błąd, ponieważ po prostu są one skipowane. Jest to użyteczne np. w momencie gdy stara wersja kodu dostaje nową wersje pliku (z większą ilością atrybutów) a okazuje się że nadal wszystko działa...

Zauważyłem też że są pomijane tak jak to zechciałeś tutaj przytoczyć. No nic, po tym jak zadałem Ci pytanie okazuje się, że opcja, że to jest pomijane jest akceptowalna. Niemniej jednak bardzo dziękuje za odpowiedź i poświęcony czas :)

Następna dyskusja:

SQL Loader Postgresql




Wyślij zaproszenie do