Это, очевидно, Oracle. Следовательно: поскольку разделителей нет, вам придется получать данные позиционно . Вот как:
SQL> CREATE TABLE Ftest (
2 idF VARCHAR(4),
3 dt DATE,
4 numero VARCHAR(1)
5 )
6 ORGANIZATION EXTERNAL
7 (
8 TYPE oracle_loader
9 DEFAULT DIRECTORY EXT_DIR
10 ACCESS PARAMETERS
11 (
12 RECORDS DELIMITED BY newline
13 LOGFILE 'ftest.log'
14 fields
15 (idf position(1:4),
16 dt position(5:14) date 'yyyy/mm/dd',
17 numero position(15:15)
18 )
19 )
20 LOCATION ('exercise.txt')
21 )
22 REJECT LIMIT UNLIMITED;
Table created.
Работает?
SQL> select * from ftest;
IDF DT N
---- -------- -
1001 05.07.20 7
1002 05.07.20 5
1003 10.07.20 0
1004 07.07.20 9
1005 10.07.20 3
1006 09.07.20 8
1007 10.07.20 4
1008 10.07.20 1
1009 10.07.20 4
1010 06.07.20 3
10 rows selected.
SQL>
На всякий случай, если вы не знали: в строке №9 упоминается каталог. Это объект Oracle, который создается пользователем SYS и указывает на каталог, расположенный на сервере базы данных. Глядя на ваш пример кода, как будто вы хотите загрузить данные со своего рабочего стола. Это не сработает (если ваш P C также не является сервером базы данных, и вы назвали этот каталог desktop
).
Кроме того, SYS должен предоставить привилегии пользователю, который будет использовать каталог, например,
grant read, write on directory ext_dir to scott;