當前位置:首頁 » 存儲配置 » 什麼數據類型主要存儲圖片

什麼數據類型主要存儲圖片

發布時間: 2022-04-01 15:30:15

A. sql中,存儲圖片用哪種類型

將圖片直接以二進制的形式存入資料庫,如果查詢頻繁,圖片大而多,不建議這樣做,首先數據會比較大,再者查詢,重新轉化為圖片
將浪費時間和資源;
一般的方法都是存儲圖片的路徑,圖片上傳到伺服器;只要數據類型的長度夠用就行varchar
類型就可以,access

備注類型;比如一些網站的在線編輯器
什麼的,
<table></table>
<img
/>
這些標簽
實際上
就是以文本的形式
保存,從資料庫
取出,頁面
就顯示對應的html
形式!

B. SQL中的照片用什麼數據類型來儲存

在SQL Server 2000, 2005和2008都是用image數據類型。
如果是新建的系統,建議改用varbinary數據類型,因為image數據類型在SQL Server 2010將不支持。

C. 在sql server中,儲存圖片的數據類型是什麼呀

用image類型

方法:
1、建立過程
CREATE PROCEDURE sp_text (
@srvname varchar (30),
@login varchar (30),
@password varchar (30),
@dbname varchar (30),
@tbname varchar (30),
@colname varchar (30),
@filename varchar (30),
@whereclause varchar (40),
@direction char(1))
AS
DECLARE @exec_str varchar (255)
SELECT @exec_str =
'text /S ' + @srvname +
' /U ' + @login +
' /P ' + @password +
' /D ' + @dbname +
' /T ' + @tbname +
' /C ' + @colname +
' /W "' + @whereclause +
'" /F ' + @filename +
' /' + @direction
EXEC master..xp_cmdshell @exec_str

2、建表和初始化數據
create table 表名 (編號 int,image列名 image)
go
insert 表名 values(1,0x)
insert 表名 values(2,0x)
go

3、讀入
sp_text '你的伺服器名','sa','你的密碼','庫名','表名','image列名','c:\圖片.bmp','where 編號=1','I' --注意條件是 編號=1

sp_text '你的伺服器名','sa','你的密碼','庫名','表名','image列名','c:\bb.doc','where 編號=2','I' --注意條件是 編號=2

go

4、讀出成文件
sp_text '你的伺服器名','sa','你的密碼','庫名','表名','image列名','c:\圖片.bmp','where 編號=1','O' --注意條件是 編號=1

sp_text '你的伺服器名','sa','你的密碼','庫名','表名','image列名','c:\bb.doc','where 編號=2','O' --注意條件是 編號=2
go

D. MySQL里存儲圖片的是什麼數據類型

背景

MySQL 一直以來都有 TEXT、BLOB 等類型用來存儲圖片、視頻等大對象信息。比如一張圖片,隨便一張都 5M 以上。視頻也是,隨便一部視頻就是 2G 以上。

假設用 MySQL 來存放電影視頻等信息,一部是 2G,那麼存儲 1000 部就是 2TB,2TB 也就是 1000 條記錄而已,但是對資料庫性能來說,不僅僅是看記錄數量,更主要的還得看佔用磁碟空間大小。空間大了,所有以前的經驗啥的都失效了。

所以一般來說存放這類信息,也就是存儲他們的存放路徑,至於文件本身存放在哪裡,那這就不是資料庫考慮的范疇了。資料庫只關心怎麼來的快,怎麼來的小。


舉例

雖然不推薦 MySQL 這樣做,但是也得知道 MySQL 該怎麼做才行,做到心裡有數。比如下面一張微信圖片,大概 5M 的樣子。

root@ytt:/var/lib/mysql-files# ls -sihl 微信圖片_20190711095019.jpg274501 5.4M -rw-r--r-- 1 root root 5.4M Jul 11 07:17 微信圖片_20190711095019.jpg

拷貝 100 份這樣的圖片來測試

  • root@ytt:/var/lib/mysql-files# for i in `seq 1 100`; do cp 微信圖片_20190711095019.jpg "$i".jpg;done;

  • root@ytt:/var/lib/mysql-files# ls

  • 100.jpg 17.jpg 25.jpg 33.jpg 41.jpg 4.jpg 58.jpg 66.jpg 74.jpg 82.jpg 90.jpg 99.jpg f8.tsv

  • 10.jpg 18.jpg 26.jpg 34.jpg 42.jpg 50.jpg 59.jpg 67.jpg 75.jpg 83.jpg 91.jpg 9.jpg 微信圖片_20190711095019.jpg

  • 1111.jpg 19.jpg 27.jpg 35.jpg 43.jpg 51.jpg 5.jpg 68.jpg 76.jpg 84.jpg 92.jpg f1.tsv

  • 11.jpg 1.jpg 28.jpg 36.jpg 44.jpg 52.jpg 60.jpg 69.jpg 77.jpg 85.jpg 93.jpg f2.tsv

  • 12.jpg 20.jpg 29.jpg 37.jpg 45.jpg 53.jpg 61.jpg 6.jpg 78.jpg 86.jpg 94.jpg f3.tsv

  • 13.jpg 21.jpg 2.jpg 38.jpg 46.jpg 54.jpg 62.jpg 70.jpg 79.jpg 87.jpg 95.jpg f4.tsv

  • 14.jpg 22.jpg 30.jpg 39.jpg 47.jpg 55.jpg 63.jpg 71.jpg 7.jpg 88.jpg 96.jpg f5.tsv

  • 15.jpg 23.jpg 31.jpg 3.jpg 48.jpg 56.jpg 64.jpg 72.jpg 80.jpg 89.jpg 97.jpg f6.tsv

  • 16.jpg 24.jpg 32.jpg 40.jpg 49.jpg 57.jpg 65.jpg 73.jpg 81.jpg 8.jpg 98.jpg f7.tsv

  • 我們建三張表,分別用 LONGBLOB、LONGTEXT 和 VARCHAR 來存儲這些圖片信息

  • mysql> show create table tt_image1G

  • *************************** 1. row ***************************

  • Table: tt_image1

  • Create Table: CREATE TABLE `tt_image1` (

  • `id` int(11) NOT NULL AUTO_INCREMENT,

  • `image_file` longblob,

  • PRIMARY KEY (`id`)

  • ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

  • 1 row in set (0.00 sec)

  • mysql> show create table tt_image2G

  • *************************** 1. row ***************************

  • Table: tt_image2

  • Create Table: CREATE TABLE `tt_image2` (

  • `id` int(11) NOT NULL AUTO_INCREMENT,

  • `image_file` longtext,

  • PRIMARY KEY (`id`)

  • ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

  • 1 row in set (0.00 sec)

  • mysql> show create table tt_image3G

  • *************************** 1. row ***************************

  • Table: tt_image3

  • Create Table: CREATE TABLE `tt_image3` (

  • `id` int(11) NOT NULL AUTO_INCREMENT,

  • `image_file` varchar(100) DEFAULT NULL,

  • PRIMARY KEY (`id`)

  • ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

  • 1 row in set (0.00 sec)

  • 我們來給三張表插入 100 張圖片(插入前,建議把 max_allowed_packet 設置到最大)

  • tt_image1

  • root@ytt:/var/lib/mysql-files# for i in `seq 1 100`;

  • do mysql -S /var/run/mysqld/mysqld.sock -e "insert into ytt.tt_image1(image_file)

  • values (load_file('/var/lib/mysql-files/$i.jpg'))";done;

  • tt_image2

  • root@ytt:/var/lib/mysql-files# for i in `seq 1 100`;

  • do mysql -S /var/run/mysqld/mysqld.sock -e "insert into ytt.tt_image2(image_file)

  • values (hex(load_file('/var/lib/mysql-files/$i.jpg')))";done;

  • tt_image3

  • root@ytt:/var/lib/mysql-files# aa='begin;';for i in `seq 1 100`;

  • do aa=$aa"insert into ytt.tt_image3(image_file) values

  • ('/var/lib/mysql-files/$i.jpg');";

  • done;aa=$aa'commit;';mysql -S /var/run/mysqld/mysqld.sock -e "`echo $aa`";

  • 檢查下三張表記錄數

  • mysql> select 'tt_image1' as name ,count(*) from tt_image1 union allselect 'tt_image2',count(*) from tt_image2 union all select 'tt_image3', count(*) from tt_image3;+-----------+----------+| name | count(*) |+-----------+----------+| tt_image1 | 100 || tt_image2 | 100 || tt_image3 | 100 |+-----------+----------+3 rows in set (0.00 sec)

  • 看下文件大小,可以看到實際大小排名,LONGTEXT 欄位存儲的最大,LONGBLOB 欄位縮小到一半,最小的是存儲圖片路徑的表 tt_image3。所以這里從存儲空間來看,存放路徑最占優勢。

  • root@ytt:/var/lib/mysql/ytt# ls -silhS tt_image*274603 1.1G -rw-r----- 1 mysql mysql 1.1G Jul 11 07:27 tt_image2.ibd274602 545M -rw-r----- 1 mysql mysql 544M Jul 11 07:26 tt_image1.ibd274605 80K -rw-r----- 1 mysql mysql 112K Jul 11 07:27 tt_image3.ibd

  • 那麼怎麼把圖片取出來呢?

    tt_image3 肯定是最容易的

  • mysql> select * from tt_image3;+----+----------------------------+| id | image_file |+----+----------------------------+| 1 | /var/lib/mysql-files/1.jpg |+----+----------------------------+...100 rows in set (0.00 sec)

  • tt_image1 直接導出來二進制文件即可,下面我寫了個存儲過程,導出所有圖片。

  • mysql> DELIMITER $$mysql> USE `ytt`$$mysql> DROP PROCEDURE IF EXISTS `sp_get_image`$$mysql> CREATE DEFINER=`ytt`@`localhost` PROCEDURE `sp_get_image`()mysql> BEGIN DECLARE i,cnt INT DEFAULT 0; SELECT COUNT(*) FROM tt_image1 WHERE 1 INTO cnt; WHILE i < cnt DO SET @stmt = CONCAT('select image_file from tt_image1 limit ',i,',1 into mpfile ''/var/lib/mysql-files/image',i,'.jpg'''); PREPARE s1 FROM @stmt; EXECUTE s1; DROP PREPARE s1; SET i = i + 1; END WHILE; END$$mysql> DELIMITER ;mysql> call sp_get_image;

  • tt_image2 類似,把 select 語句里 image_file 變為 unhex(image_file) 即可。

    總結

    這里我舉了個用 MySQL 來存放圖片的例子,總的來說有以下三點:

  • 佔用磁碟空間大(這樣會帶來各種各樣的功能與性能問題,比如備份,寫入,讀取操作等)

  • 使用不易

  • 還是推薦用文件路徑來代替實際的文件內容存放

E. sql資料庫什麼數據類型可以存儲圖片又能存儲文本

就是image類型,它就是二進制類型,可以存儲任何數據,包括圖片、文本甚至exe之類的文件都是可以的。

F. 資料庫image數據類型可以存放什麼類型的圖片

所有的類型
那個image不是只能放圖片的, 所有的文件都可以以二進制的形式存放到這個欄位中

G. mysql 用什麼數據類型能夠儲存圖片路徑

請問你是PHP么?如果是在插入變數前執行一句$test = addslashes($test);
如果是別的語言,請查一下相關的轉義函數,如果只是一兩條手動插入,在'\'前再加一個'\'即'\\'就可以成功插入了

我對JSP不是很熟悉,不知道它的字元串替換如何實現,你可以參考一下這個資料,祝你好運

H. 資料庫中的圖片的數據類型應該是什麼類型的

應該是image類型的.
圖片插入後將以二精製的形式保存在資料庫中。
提取的時候,會重組二精製數據,成圖片.

根據你說的,你列出的不是類型,而是欄位的屬性。
你自己好好的查找一下?

祝你早日解決問題 ^_^
試下備注和OLE對象。

I. 在資料庫中可用來存儲圖片的欄位對象是哪種類型的欄位

一、 把圖片直接以二進制形式存儲在資料庫中

一般資料庫提供一個二進制欄位來存儲二進制數據。比如SQL Server中的BINARY,VARBINARY;

1、BINARY 數據類型用於存儲二進制數據。其定義形式為BINARY( n), n 表示數據的長度,取值為1 到8000 。在使用時必須指定BINARY 類型數據的大小,至少應為1 個位元組。BINARY 類型數據佔用n+4 個位元組的存儲空間。

在輸入數據時必須在數據前加上字元「0X」 作為二進制標識,如:要輸入「abc 」則應輸入「0xabc 」。若輸入的數據過長將會截掉其超出部分。若輸入的數據位數為奇數,則會在起始符號「0X 」後添加一個0,如上述的「0xabc 」會被系統自動變為「0x0abc」。

2、VARBINARY數據類型的定義形式為VARBINARY(n)。 它與BINARY 類型相似,n 的取值也為1 到8000, 若輸入的數據過長,將會截掉其超出部分。

不同的是VARBINARY數據類型具有變動長度的特性,因為VARBINARY數據類型的存儲長度為實際數值長度+4個位元組。當BINARY數據類型允許NULL 值時,將被視為VARBINARY數據類型。

一般情況下,由於BINARY 數據類型長度固定,因此它比VARBINARY 類型的處理速度快
另,MySQL中有個blob欄位。Oracle資料庫中是blob或bfile類型

熱點內容
pythoneditplus 發布:2025-02-01 06:31:57 瀏覽:275
bmp轉png源碼 發布:2025-02-01 06:30:08 瀏覽:469
魔獸聯盟人多的伺服器是什麼 發布:2025-02-01 06:25:25 瀏覽:41
c語言字元串子串刪除 發布:2025-02-01 06:25:23 瀏覽:534
怎麼改電腦鎖屏密碼 發布:2025-02-01 06:16:55 瀏覽:471
存儲卡不能格式化怎麼辦 發布:2025-02-01 06:02:55 瀏覽:691
scratch編程網站 發布:2025-02-01 05:51:27 瀏覽:396
安卓怎麼更好用 發布:2025-02-01 05:45:38 瀏覽:146
ps如何存儲多頁為pdf 發布:2025-02-01 05:44:15 瀏覽:33
預編譯和預處理區別 發布:2025-02-01 05:30:42 瀏覽:966