Deyək ki mən hər hansı bir şəkli bazada saxlamaq istəyirəm.
Table yaradıram:
CREATE TABLE blob_test( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(10), file_type VARCHAR(10), my_file BLOB NOT NULL, PRIMARY KEY(id) );
Daha sonra İnsert edirəm:
INSERT INTO blob_test(name,file_type,my_file) VALUES ('mysql','jpeg', LOAD_FILE('C:/Program Files/MySQL/MySQL Server 5.5/blog_output.png'));
Və daha sonra da Select :
SELECT * FROM blob_test;
Nəticə 🙂
mysql> select * from blob_test\G *************************** 1. row *************************** id: 1 name: mysql file_type: jpeg my_file: ëPNG → IHDR ☺¹ ♠ ├?¶l ‼hIDATx£ÿØ?kõH→çò▀8♠£▄à├└991╔NrÄ£Lµl╗┴░Ó×═ÿ♫╠}üë6↑↑î↕â╣d┐┴Ç;Ü═6╗p`0\p┘ ]á´[¬ÆJj§┤·ÿü▼ÒÚûTÛÀ̬_òJ¦╩∟ İ&;¶ └~┴ì☺ îâ┘♥ ↑│ 0♫f☼ `∟╠▲ └8İ= Çq0{ Ò`÷ ã ì☺ îâ┘♥ ↑│ 0♫f☼ `∟╠▲ └8İ= Çq0{ Ò`÷ ã┴ì☺ îâ┘♥ ↑│ 0♫f☼ `∟╠▲ └8İ= Çq0{ Ò`÷ fÅ►B╚£0{═,f █O?©?■²W¸[»A ╔²▀´¦▼_▀'o¹▀ş■ä┘#ä►→-╠^│ú┘ ┘}²·Ì²±§o¯¸í┘°?■V→}Ñ>#O9÷í‼ !äºr ┘kv0¹╩îgÚS═¥▀☼Ø!äû+╠^3ªìÙK?© ³%qئ3¹» ↑╣ş7¿8t"!ä►Z«0{═$│ ÿğ▼↕ÎÌC│¶æâ♦▒Í/»♠∟:æ►-Wİ¢fé┘ÀĞØv) zZ═ÓB\╬?t"!ä►Z«0{═h│oıw─Ñx▀┤ §Q¹╔%Ç║╠C'↕íÕ │Îî6¹▀ 5ÕR╝6ÿ▒âäÿ_■Û■[/☺T♥àC'↕íÕ │Îî4¹®Ù¯r `┬~Êì½%ÇC'↕íÕ │Îì`÷ ▀¡☼«█O┘»[«¼È¹│╠eYµ▓│╠}¨9s_.¶ â╔pò╣¹ø´Ù,sÎWËô¬)┐:NR¨Án2¸6a█Ù¼-#øz¥ëeıU_³ÛX°´?Ş´9&ŞK
başa düşüləndi 🙂
BLOB faylı database-e insert edirəm bu heç. Sual belədir:
Yalnız SQL, MySQL Stored Routine və yaxud PL\SQL və yaxud hər hansı database-də gedən (proqramlaşdırma dilindən istifadə etmədən) əməliyyat nəticəsində bu faylı geri oxuyub photo şəklində başqa bir directory-yə yaza bilərəm mi? 🙂
Verilmiş cavablar və yazılan şərhlər (10 cavab var)
0
sizin məlumatı oxuma tərziniz səhvdi axı.
Yuxarıdakı kod blob_test cədvəlində olan bütün qeydləri göstərir.
siz konkiret lazım olan şəkilin nəyinisə (məsələn id) bildirməlisiniz.
Yuxarıda id nömrəsi 1 olan qeydi seçəcək. Ancaq mən bilən mysql dilinin belə imkanı yoxduki şəkli çıxara bilsin. SQL dilin belə bir imkanı olmalıdı.
0
Bura baxa bilərsən
0
Əgər mənim table-ımda cəmi bir qeyd varsa və onun İD-si 1-dirsə onda where id=1 yazmağa ehtiyac yoxdu 🙂
Məncə SQL-in belə bir imkanı yoxdur. amma pl\sql və yaxud mysql routine-lə bunu etmək olar amma necə?
0
Salam. Yaza bilərsiniz. Amma return edəndə header JPEG kimi vermək lazımdır, sizin kodda əsas çatmayan budur. Məsələn
vermisinizsə, image php faylında üst hissədə header(“Content-Type: image/jpeg”); belə bir şey olmalıdır, ardıyca da sizin mysql-dən oxuduğunuz data.
P.S. Bazada şəkli saxlamaq çox əlverişsiz bir şeydir. Ondansa sadece path-ını saxlayın, özünü faylssistemə atın.
0
php və yaxud java-da bunu etmək olur
mən sırf database-in öz imkanları ilə bunu etmək istəyirdim 🙂 maraq üçün…
0
Məncə yenədə id bildirilməlidir. SQL 100% bunu bacarır. İnternetdəki məlumatlara görə MySQL da bunu edə bilir. Yuxarıdakı link də izah olunub.
0
ID olsun ya olmasın nəticə eynidir. Əgər 50-60 dənə şəkil olsaydı mən də bilirəm ki, İD-ni qeyd etmək lazım idi ki yalnız 1 photo çıxsın. indiki halda cəmi 1 qeyd var table-da. ona görə də:
SELECT * FROM blob_test; = SELECT * FROM blob_test where id=1;
Sən verdiyin link isə documentation linkidi. 11.4.3. The BLOB and TEXT Types — BLOB və TEXT-in nə olduğunu izah edir. Orda mənim istədiyim yoxdu axı.
SQL ilə etmək olursa onda necə? MySQL Stored Routine-lə etmək olarsa o da necə? 🙂
2
1
http://stackoverflow.com/questions/4646533/exporting-blob-from-mysql-database-to-file-with-only-sql
buradan baxin
1
hərdən qoğal əmiyə də müraciət edin
Sual verin
Cavab verin