ошибка при импорте с помощью ctl-файла sqlldr oracle

#oracle #sql-loader #ctl

#Oracle #sql-загрузчик #ctl

Вопрос:

Я пытался импортировать данные из таблицы базы данных oracle с помощью ctl-файла. К сожалению, это не работает из-за синтаксической ошибки, и, несмотря на мои усилия, я не могу понять, почему.

Код SQL:

 sqlldr USERID=user/password, CONTROL=C:wkt_building001.ctl, LOG=C:ulcase1.log 
 

ctl-код файла:

 OPTIONS (readsize=20000000, DIRECT=TRUE)
UNRECOVERABLE LOAD DATA
CHARACTERSET UTF8

INFILE 'C:/wkt_building.txt.001'
APPEND
PRESERVE BLANKS
INTO TABLE wkt_building
FIELDS TERMINATED BY '  ' TRAILING NULLCOLS
(
BUILDING_ID,
BUILDING CHAR(100000)
)
 

ошибка:

 org.jkiss.dbeaver.model.sql.DBSQLException: Errore SQL [900] [42000]: ORA-00900: istruzione SQL non valida

at...
    
Caused by: java.sql.SQLSyntaxErrorException: ORA-00900: istruzione SQL non valida


    at ...

Caused by: Error : 900, Position : 0, Sql = sqlldr USERID=user/password, CONTROL=C:wkt_building001.ctl, LOG=C:ulcase1.log data=C:wkt_building.txt.001, OriginalSql = sqlldr USERID=user/password, CONTROL=C:wkt_building001.ctl, LOG=C:ulcase1.log data=C:wkt_building.txt.001, Error Msg = ORA-00900: istruzione SQL non valida


    at ...
 

заранее благодарю

Комментарии:

1. BUILDING CHAR(100000) ?? попробуйте уменьшить размер до максимального предела. попробуйте с BUILDING CHAR(256) -- or less than 4000

2. нет, это правильно, я не настроил соединение с базой данных, поэтому оно не сработало, и команда неправильная, в ней отсутствуют: порт, IP-адрес и имя базы данных. Теперь это работает . В любом случае спасибо за ответ.

Ответ №1:

в неправильной начальной команде отсутствуют IP-адрес, порт и имя базы данных, это правильная версия:

  • sqlldr USERID=user/password@10.0.0.116:1521/name_database CONTROL=wkt_face001.ctl LOG=ulcase1.log

Кроме того, чтобы настроить соединение в cmd, следуйте этому руководству, в котором используются net menager, должны быть все шаги: