Oracle
 sql >> база данни >  >> RDS >> Oracle

Sql loader - вторият заграден низ не присъства

Ако последното ви поле винаги присъства (въпреки че trailing nullcols предполага, че не е) и имате известен контрол върху форматирането, можете да използвате CONTINUEIF директива за третиране на втория ред като част от същия логически запис.

Ако comments винаги присъства и е оградено в двойни кавички, тогава можете да направите:

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

Което би обработвало записи на данни като:

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

Или ако винаги имате разделител след полето за коментари, независимо дали е попълнено или не:

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

Което би обработило:

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

И двата начина ще заредят данните като:

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

Но това губи новия ред от данните. За да запазите това, трябва да присъства крайният разделител на полето и вместо CONTINUEIF можете да промените разделителя на записи, като използвате формат за запис на поток :

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

"str ';\n'" дефинира терминатора като комбинация от знак за край на полето и знак за нов ред. Вашият разделен коментар има само тази комбинация на последния ред. Със същия файл с данни като предишната версия, това дава:

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

P N

4 rows selected.

Тъй като сте на Windows, може да се наложи да включите \r и във формата, напр. "str ';\r\n'" , но не мога да проверя това.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разделете голям текстов/CSV файл на множество файлове в PL SQL

  2. Основно администриране на Oracle 12c Multitenant

  3. oracle sql - намиране на общи елементи, закупени между двама потребители

  4. Oracle DateTime в клауза Къде?

  5. Използване на референтен курсор на Oracle в Java без зависимост от Oracle