Ошибка при вставке изображения в таблицу sql

Я пытаюсь вставить изображение «png» в поле таблицы sql (называемое barchart, которое имеет тип blob) с помощью приведенного ниже запроса.

INSERT INTO disease_symptom_soc(barchart) Values ((SELECT BULKColumn FROM OPENROWSET(BULK N'/home/barchartC2936861.png', SINGLE_BLOB) AS Image)) where disease_id='C2936861';

Я получаю следующую ошибку. В чем может быть причина?

ОШИБКА 1064 (42000): ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, на предмет правильного синтаксиса для использования рядом с '(BULK N'/home/barchart' в строке 1


person user2878378    schedule 15.11.2013    source источник


Ответы (3)


я думаю, вы можете использовать LOAD_FILE

Пример:

INSERT INTO expBLOB(ID,IMAGE) VALUES(1,LOAD_FILE('/some/path/image.png'))
person Vinayak Pahalwan    schedule 15.11.2013
comment
привет, я пробовал как: ВСТАВИТЬ В Disease_symptom_soc(barchart) VALUES(LOAD_FILE('path/barchartC2936861.png')) WHERE Disease_id='C2936861'; НО я получаю сообщение об ошибке: ОШИБКА 1064 (42000): у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, на предмет правильного синтаксиса для использования рядом с «WHERE Disease_id = «C2936861» в строке 1. - person user2878378; 15.11.2013

Если можете, измените тип данных столбца на «image». В зависимости от используемой версии сервера sql. В противном случае, если это база данных на основе оракула, вам придется создать процедуру загрузки файла и выполнить ее следующим образом: http://arjudba.blogspot.com/2008/06/how-to-insert-blob-dataimage-video-into.html

person liquidsnake786    schedule 15.11.2013
comment
Боюсь, ваша ссылка больше не активна - person Joseph Budin; 29.03.2021

MySql OpenrowSet используется не для копирования файлов в базу данных, а для запроса внешнего файла (csv, xls) со строкой подключения, например

OPENROWSET ('MSDASQL','mysql connection string','query')

Я предлагаю вам загрузить файл с простой программой, сделанной на любом языке (я не знаю, разрабатываете ли вы на php, c#...) и передать его уже загруженным в память в БД с помощью простого запроса на вставку.

person AlexF    schedule 15.11.2013
comment
Тогда в ссылке здесь они не относятся к загружаемому изображению? weblogs.sqlteam.com/peterl/archive/2007/09/26/ - person user2878378; 15.11.2013
comment
Насколько я знаю, этот тип синтаксиса некоторое время работал в более старых версиях sqlServer: я пытался использовать их несколько лет назад, но у меня было больше проблем, чем упрощение: во-первых, параметризованная функция @ не работала. один раз заставьте меня ругаться, потому что я должен сделать запрос для каждого имени файла: еще один большой недостаток этого синтаксиса заключается в том, что вы ДОЛЖНЫ иметь один и тот же каталог для каждого компьютера, на котором вы устанавливаете свою программу, и это очень большое ограничение: я рекомендую вам приложить немного усилий, чтобы написать что-то менее ограниченное, более гибкое и поддающееся отладке. - person AlexF; 18.11.2013