#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, должны быть все шаги: