Оракул. ошибка в файле загрузки данных

Таблица:

CREATE TABLE image_table (
   image_id   NUMBER(5),
   file_name  VARCHAR2(30),
   image_data BLOB);

SQL:

load data infile * replace into table test_image_table
fields terminated by ','
(
     image_id   INTEGER(5),
     file_name  CHAR(30),
     image_data LOBFILE (CONSTANT 'C:\img.txt') TERMINATED BY EOF
 )

C:\img.txt: 001,C:\1.jpg

Ошибка: ORA-00928: отсутствует ключевое слово SELECT 00928. 00000 - "отсутствует ключевое слово SELECT" *Причина:
*Действие: Ошибка в строке: 4 Столбец: 1

Что я делаю не так??


person Andrei    schedule 04.11.2011    source источник
comment
Это недействительный SQL. Похоже на управляющий файл sqldr (хотя я не уверен, что ваш синтаксис верен). Вы пытаетесь запустить это в sqlplus?   -  person Mat    schedule 04.11.2011
comment
load data infile также не является допустимым синтаксисом элемента управления sqldr.   -  person a_horse_with_no_name    schedule 04.11.2011
comment
Мне нравится этот пример (orafaq.com/wiki/SQL*Loader_FAQ#How_does_one_use_SQL.2ALoader_to_load_images .2C_звуковые_клипы_и_документы.3F)   -  person Andrei    schedule 04.11.2011


Ответы (3)


Вы хотите использовать SQL*Loader, который не является SQL*Plus. Вы должны сохранить то, что вы называете SQL, как файл с расширением .ctl, и вызвать sqlldr:

sqlldr login/password@database control=my_file.ctl

Обратите внимание, что infile * означает, что в файле CTL должно быть некоторое количество BEGINDATA.

person Benoit    schedule 04.11.2011
comment
а как вызвать sqldr? пытаюсь сделать это через разработчика sql - Error Unknown Command. И мне это понадобится позже для вызова в zend framework. Чтобы загрузить изображение в таблицу - person Andrei; 04.11.2011
comment
@Andrei: sqldr - это консольная программа. - person Benoit; 04.11.2011
comment
@Andrei: Нет. Вы открываете окно командной строки, вы cd переходите в каталог, где находится файл ctl, и вводите команду выше. - person Benoit; 04.11.2011
comment
то этот метод не подходит. @Benoit подскажите как загружать изображения в базу данных без использования каталога в Oracle? Столько способов пробовал и не работает ( использую Oracle + Zend Framework - person Andrei; 04.11.2011

Похоже, вы пытаетесь использовать SQL*Plus для запуска управляющего файла SQL*Loader. Используйте один из следующих sqlldr в вашей командной строке UNIX. Не забудьте сохранить упомянутый файл SQL как файл .ctl.

sqlldr username@server/password control=loader.ctl

or

sqlldr username/password@server control=loader.ctl
person Shipra    schedule 30.06.2020

Попробуйте это в SQL Developer: host sqlldr username/password control=my_file.ctl

person Marnilce Silva    schedule 30.04.2021
comment
уценка вашего кода - person Ali Besharati; 30.04.2021