I want to insert image into a table like
CREATE TABLE XX_SAMPLE(ID INT
,IMAGE BLOB);
So can you help out form how to insert image into the above table.
I want to insert image into a table like
CREATE TABLE XX_SAMPLE(ID INT
,IMAGE BLOB);
So can you help out form how to insert image into the above table.
Please try below code
INSERT INTO xx_BLOB(ID,IMAGE) VALUES(1,LOAD_FILE('E:/Images/jack.jpg'));
You should use LOAD_FILE like so:
LOAD_FILE('/some/path/image.png')
Step 1: open your mysql workbench application select table. choose image cell right click select "Open value in Editor"
Step 2: click on the load button and choose image file
Step 3:then click apply button
Step 4: Then apply the query to save the image .Don't forgot image data type is "BLOB". Step 5: You can can check uploaded image
You can try something like this..
CREATE TABLE 'sample'.'picture' (
'idpicture' INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
'caption' VARCHAR(45) NOT NULL,
'img' LONGBLOB NOT NULL,
PRIMARY KEY('idpicture')) TYPE = InnoDB;
or refer to the following links for tutorials and sample, that might help you.
http://forums.mysql.com/read.php?20,17671,27914
http://www.hockinson.com/programmer-web-designer-denver-co-usa.php?s=47
I have three answers to this question:
It is against user experience UX best practice to use BLOB and CLOB data types in string and retrieving binary data from an SQL database thus it is advised that you use the technique that involves storing the URL for the image( or any Binary file in the database). This URL will help the user application to retrieve and use this binary file.
Second the BLOB and CLOB data types are only available to a number of SQL versions thus functions such as LOAD_FILE or the datatypes themselves could miss in some versions.
Third DON'T USE BLOB OR CLOB. Store the URL; let the user application access the binary file from a folder in the project directory.
I tried all above solution and fail, it just added a null file to the DB.
However, I was able to get it done by moving the image(fileName.jpg
) file first in to below folder(in my case) C:\ProgramData\MySQL\MySQL Server 5.7\Uploads
and then I executed below command and it works for me,
INSERT INTO xx_BLOB(ID,IMAGE) VALUES(1,LOAD_FILE('C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/fileName.jpg'));
Hope this helps.
The accepted answer is correct, but I came across so many cases where LOAD_FILE()
returns NULL
(like discussed in 24459149) that I normally have been better off, creating an import file with a hex representation:
docker run -d -p 3306:3306 -e MARIADB_ROOT_PASSWORD=test -e MARIADB_USER=test -e MARIADB_PASSWORD=test -e MARIADB_DATABASE=testdb mariadb:latest
echo "CREATE TABLE XX_SAMPLE(ID INT, IMAGE LONGBLOB)" |mysql -h 127.0.0.1 -u test --password=test testdb
echo -n "INSERT INTO XX_SAMPLE(ID,IMAGE) VALUES(1, 0x" >img_import.sql
cat /some/path/image.png |perl -ne "print unpack 'H*'" >> img_import.sql
echo ");" >> img_import.sql
mysql -h 127.0.0.1 -u test --password=test testdb <img_import.sql
Also Perl's unpack
has been easier to use, compared to xxd
or hexdump
that are not always installed and need special flags to get that long string of hex values without breaks, that the mysql
client expects.
UPDATE:
BLOB
. With normal size images you will need MEDIUMBLOB
or even LONGBLOB
.This is on mysql workbench -- give the image file path:
INSERT INTO XX_SAMPLE(id,image) VALUES(3,'/home/ganesan-pc/Documents/aios_database/confe.jpg');
© 2022 - 2024 — McMap. All rights reserved.