当前位置:首页 » 编程语言 » 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类型没啥区别的