Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Program ładujący sql - brak drugiego ciągu obudowy

Jeśli twoje ostatnie pole jest zawsze obecne (chociaż trailing nullcols sugeruje, że nie) i masz pewną kontrolę nad formatowaniem, możesz użyć CONTINUEIF dyrektywy, aby traktować drugą linię jako część tego samego rekordu logicznego.

Jeśli comments pole jest zawsze obecne i ujęte w cudzysłów, możesz to zrobić:

...
truncate
continueif last != x'22'
into table ...

Które obsłużyłyby rekordy danych, takie jak:

S;Y;"Test 1"
F;N;"Test 2"
P;Y;"Test with
new line"
P;N;""

Lub jeśli zawsze masz ogranicznik po polu komentarzy, niezależnie od tego, czy jest wypełniony, czy nie:

...
truncate
continueif last != ';'
into table ...

Który poradzi sobie:

S;Y;Test 1;
F;N;"Test 2";
P;Y;Test with
new line;
P;N;;

Oba sposoby załadują dane jako:

S M COMMENTS
- - ------------------------------
S Y Test 1
F N Test 2
P Y Test withnew line
P N

Ale to traci nową linię z danych. Aby to zachować, musisz mieć ogranicznik pola końcowego, a zamiast CONTINUEIF separator rekordów można zmienić przy użyciu formatu rekordu strumienia :

...
infile 'C:\Users\lab.csv' "str ';\n'"
truncate
into table ...

"str ';\n'" definiuje terminator jako kombinację terminatora pola i znaku nowej linii. Twój komentarz dzielony ma tę kombinację tylko w ostatniej linii. W przypadku tego samego pliku danych co w poprzedniej wersji daje to:

S M COMMENTS
- - ------------------------------
S Y Test 1
F N Test 2
P Y Test with
    new line

P N

4 rows selected.

Ponieważ jesteś w systemie Windows, być może będziesz musiał dołączyć \r w formacie m.in. "str ';\r\n'" , ale nie jestem w stanie tego sprawdzić.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle Database BLOB do InputStream w Javie?

  2. Wstawianie danych SQL Server za pomocą Oracle® SQL*Loader

  3. Jak przejść przez różne schematy i wykonać na każdym z nich trochę sql?

  4. Aby wyodrębnić określone ciągi z podanego ciągu w Oracle

  5. Wypełnianie tabeli PL/SQL z bloku w Oracle D2k Forms