當前位置:首頁 » 編程語言 » sql清除blob數據
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql清除blob數據

發布時間: 2022-07-18 22:56:10

❶ 如何使用PL/sql讀取資料庫中的BLOB對象

使用PL/SQL從資料庫中讀取BLOB對象:
1.首先,確認現有對象

SQL> col fdesc for a30
SQL> select fid,fname,fdesc from eygle_blob;

FID FNAME FDESC
------------------------ ------------------------------
1 ShaoLin.jpg 少林寺-康熙手書
2 DaoYing.jpg 倒映

2.創建存儲Directory

SQL> connect / as sysdba
Connected.
SQL> create or replace directory BLOBDIR as 'D:oradataPic';

Directory created.

SQL>
SQL> grant read,write on directory BLOBDIR to eygle;

Grant succeeded.

SQL>

3.創建存儲過程

SQL> connect eygle/eygle
Connected.
SQL>
SQL> CREATE OR REPLACE PROCEDURE eygle_mp_blob (piname varchar2,poname varchar2) IS
2 l_file UTL_FILE.FILE_TYPE;
3 l_buffer RAW(32767);
4 l_amount BINARY_INTEGER := 32767;
5 l_pos INTEGER := 1;
6 l_blob BLOB;
7 l_blob_len INTEGER;
8 BEGIN
9 SELECT FPIC
10 INTO l_blob
11 FROM eygle_blob
12 WHERE FNAME = piname;
13
14 l_blob_len := DBMS_LOB.GETLENGTH(l_blob);
15 l_file := UTL_FILE.FOPEN('BLOBDIR',poname,'wb', 32767);
16
17 WHILE l_pos < l_blob_len LOOP
18 DBMS_LOB.READ (l_blob, l_amount, l_pos, l_buffer);
19 UTL_FILE.PUT_RAW(l_file, l_buffer, TRUE);
20 l_pos := l_pos + l_amount;
21 END LOOP;
22
23 UTL_FILE.FCLOSE(l_file);
24
25 EXCEPTION
26 WHEN OTHERS THEN
27 IF UTL_FILE.IS_OPEN(l_file) THEN
28 UTL_FILE.FCLOSE(l_file);
29 END IF;
30 RAISE;
31 END;
32 /

Procere created.

4.最後取出數據

SQL> host ls -l d:oradataPic
total 7618
-rwxrwxrwa 1 gqgai None 2131553 Apr 19 10:12 DaoYing.jpg
-rwxrwxrwa 1 gqgai None 1768198 Apr 19 10:12 ShaoLin.jpg

SQL> exec eygle_mp_blob('ShaoLin.jpg','01.jpg')

PL/SQL procere successfully completed.

SQL> host ls -l d:oradataPic
total 11072
-rwxrwxrwa 1 Administrators SYSTEM 1768198 Apr 26 07:16 01.jpg
-rwxrwxrwa 1 gqgai None 2131553 Apr 19 10:12 DaoYing.jpg
-rwxrwxrwa 1 gqgai None 1768198 Apr 19 10:12 ShaoLin.jpg

SQL>
SQL> exec eygle_mp_blob('DaoYing.jpg','02.jpg')

PL/SQL procere successfully completed.

SQL> host ls -l d:oradataPic
total 15236
-rwxrwxrwa 1 Administrators SYSTEM 1768198 Apr 26 07:16 01.jpg
-rwxrwxrwa 1 Administrators SYSTEM 2131553 Apr 26 07:19 02.jpg
-rwxrwxrwa 1 gqgai None 2131553 Apr 19 10:12 DaoYing.jpg
-rwxrwxrwa

❷ 如何用SQL操作oracle的blob欄位里的字元串數據

可以通過dbms_lob來輔助查詢:
--創建測試表
create table tt1 (XXName varchar2(20),ProctIDs blob);
--向測試表中插入數據
insert into tt1 select 'a',to_blob('a001b002') from al;
--查詢blob欄位中含有'a001'的記錄select XXName from tt1 where mod(dbms_lob.instr(ProctIDs,'a001'),2)=1
--刪除測試表
drop table tt1;

❸ JAVA和SQL關於BLOB的很大的問題……

Blob是保存二進制數據的,一般用於保存圖片的。至於用於保存聲音的項目我還沒有做過,所以不清楚;
但從保存二進制編碼發生錯誤來說,我覺得是格式問題;建議把MP3格式轉為其他格式看看如何。我見到的通過web進行音頻保存都是wmv格式,或者更加小的格式,好小是mp3的。
純屬個人意見,不知道對不對的。

❹ 關於mysql中的blob欄位

取二進制數據:
一樣的sql語句,查詢出來即可。只不過二進制數據是個數據塊,需要得到數據塊的大小和數據指針。
bool CMySqlAccess::GetBinaryField(int nCol,char* &pDataOut,int& nDataLen)
{
if (m_ItemMySqlRow[nCol] != NULL)
{
unsigned long *FieldLength = mysql_fetch_lengths(m_pMySqlResult);
nDataLen = (int)FieldLength[nCol];
pDataOut = (char*)(m_ItemMySqlRow[nCol]);
return true;
}
else
{
return false;
}
}
像通常一樣查詢後,得到結果集,然後得到第nCol列結果,返回二進制指針結果和二進制長度。返回後必須立馬處理或者存儲一份。否則mysql將數據銷毀,指針所指數據則無效了。
存二進制數據:
mysql語句接受的sql語句都是string,以'\0'結尾的。如果冒然插入二進制數據到sql語句中,要麼報錯,要麼存儲錯誤。此處可以通過mysql提供的函數將數據轉換一下即可。
char* CMySqlAccess::ConvertBinaryToString(char* pBinaryData,int nLen)
{
static char s_BinaryData[10240];
mysql_real_escape_string(m_pMySqlConn,s_BinaryData,pBinaryData,nLen);
return s_BinaryData;
}
上面這個函數只能單線程使用啊,將一塊二進制數據轉換為mysql可識別的string數據。這樣就直接可以通過mysql的sql語句insert,update來對blob數據進行更新和插入了,sql語句用法不變。

❺ sql怎麼讀取BLOB類型的數據

clob數據還好說 可以使用to_str轉換成字元串, blob是二進制數據, 得把二進制數據轉換才行

❻ 如何用SQL語句將Oracle資料庫上的BLOB數據下載到客戶機上

1、客戶機上弄個samba共享目錄。伺服器端映射到本地目錄。directory指向這個本地目錄。
2、客戶機使用ftp,plsql有一些ftp支持包。
3、plsql調用伺服器端的dos 或者 shell 命令。
4、plsql使用java存儲過程解決遠程傳輸的問題。
解決方法很多,第一種最簡單。就是映射遠程目錄即可。

❼ 如何用sql語句寫入含blob類型欄位的數據

在PowerBuilder裡面操作BLOB數據地靈活技術 PowerBuilder提供的BLOB(Binary Large Object)數據類型可以用來處理大型數據

❽ SQL Server2008資料庫中沒有Blob數據類型

可以用image代替 ,2008還可以用varbinary(MAX)

Sql里可以存文件的類型,和My sql 或 oracle的blob類型沒啥區別的