打印本文 打印本文 关闭窗口 关闭窗口
在sybase中插入图片、PDF、文本文件
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1757  更新时间:2009/4/25 1:16:13  文章录入:mintao  责任编辑:mintao
请问怎么才能把图片、PDF、文本文件插入到sybase中,在unix操作系统下。谢谢了!!!    

 光芒神剑 回复于:2002-03-25 12:10:35 在程序中使用二进制大对象!

 howto 回复于:2002-03-26 21:23:33 可以定义字段类型为imge

 jazy 回复于:2002-04-22 22:13:45 我基本统一楼上所说!!!Sybase 支持Image 类型!!

 lzhu 回复于:2002-05-08 16:00:55 一张照片是一个文件(phtot.jpg),那有什么命令才能加入到表中呢?

谢谢

 晴天羽 回复于:2002-05-10 10:41:12 那用什么方法可以插入到数据库中呢?这些我都定义了。

 陈苏文 回复于:2002-05-11 15:56:09 用函数writetext 和 readtext
来实现长字符串和二进制数据的操作。

 晴天羽 回复于:2002-05-13 12:38:52 能否举个例子,谢谢您了。

 陈苏文 回复于:2002-05-14 09:06:21 SYBASE SQL Server提供了两个语句去实现长二进制数据的操作,从而改善性能,并简化对文本和图像栏的访问。文本和图像数据存储在一系列独立的2kb的页链中,和行数据的其他部分是分开的。在行数据本身中,SQL Server存储一个指向文本或图像数据链开始的页指针。文本/图像语句writtext和readtext用该指针寻找页链,并能够直接地写入链中而不必修改其本行(为了做到这一点,用户必须已有一个非空的页指针存储在行中)。
用textptr()函数可检索某行的页指针。

如:
declare @pageptr varbinary(16)
select @pageptr=textptr(textstring)
from texts
where id=3
writetext texts.textstring @pageptr
“Mary had a little lamb, its fleece was white as snow”

注意:所有的文本和图像操作,不论是用writetext手工进行的,还是用insert或update语句自动进行的,都要求两个物理步骤:SQL Server必须先找到本行中的页指针,然后到那一页并进行所要求的操作。

 晴天羽 回复于:2002-05-14 09:34:03 有点看不懂,不太明白。我想用php方法把pdf插入数据库。你来做斑竹好了,回答的很好,只是我还没有看懂。/

 晴天羽 回复于:2002-05-14 09:41:14 declare @pageptr varbinary(16) 
select @pageptr=textptr(textstring) from texts where id=3 
writetext texts.textstring @pageptr 
“Mary had a little lamb, its fleece was white as snow” 
看不太明白,。

 陈苏文 回复于:2002-05-14 16:09:14 那个代码的意思是:
第一行定义了一个变量,用来保存页指针
第二行是给新定义的那个变量赋值,  就是找到你要插入的位置。
第三行是把第四行那一句话插入到表texts 的tesstring字段中去。
看看能不能明白?

 lzhu 回复于:2002-05-14 18:23:30 1、这句有点不明白 select @pageptr=textptr(textstring) from texts where id=3 
我的理解是textstring , id 是表texts的两个字段,其中textstring 定义为image类型,对吗?
2、如果是一个文件,则在后面写上文件的绝对路径:"/usr/bin/demo.txt",对吗?
 
请斑竹指点


 陈苏文 回复于:2002-05-15 09:06:16 你的理解是正确的。
不过如果是文件的话,应该这样处理,首先打开文件,把文件的数据读到一个变量里,然后把变量的值,赋给那一字段。

 晴天羽 回复于:2002-05-15 09:34:10     如果我有张表(texts),字段有(id,name,title,textstring(image类的),end),把socket.pdf插入texts表中的步骤为:
1.declare @pageptr varbinary(16) ;
2.打开文件,把文件的内容赋给变量@pageptr;
3.writetext texts.textstring @pageptr把数据写入texts,但其他数据怎么写如,就是name,title,end怎样放入。




 陈苏文 回复于:2002-05-15 09:52:08 直接用insert就行了,  不过插入的时间对于textstring不能为空随便插入一个什么字符串就行,  然后再找到那个链表,就是你再仔细看一下我上面写的,看能不能理解了。

 晴天羽 回复于:2002-05-15 10:28:58 select @pageptr=textptr(textstring) from texts where id=3 
我不懂这句话的意思,id=3是什么意思。这好象是查询的意思,但为什么要把id=3的记录赋给pageptr变量,好奇怪。是不是这是赋值的意思,赋值后再插入。如果我用文件插入,就不要这句话了,对不对?

 晴天羽 回复于:2002-05-15 10:41:34 忘了,怎样才能找到要插入的位置?

 陈苏文 回复于:2002-05-15 11:27:42 你首先用insert插入了其他的数据以后,再用上面的方法插入大文本或图片。

 lzhu 回复于:2002-05-15 14:23:04 请写一个完整的过程,假设文件是一个bmp文件(photo.bmp),将photo.bmp插入到表texts的textstring中,表的字段有(id,name,title,textstring(image类的),end)
其中id=3 ,name='smith', title='professor', end='20020515'  photo.bmp是smith的照片文件,谢谢

 mengle 回复于:2002-07-13 20:57:55 是不是应该把大对象放在最后面?

 icebolt 回复于:2002-10-22 13:31:07 我想用php来实现,不在数据库中操作,可以吗

 psgg 回复于:2002-10-22 15:10:03 请继续讨论下去,然后就是一篇经典的讲稿。我不懂但我在看,

 icebolt 回复于:2002-10-23 12:04:14 讲稿?我正在做,做成了写篇文章给你吧

 icebolt 回复于:2002-10-24 13:14:59 我遇到了这样的问题,用writetext写进去去了,在数据库中也能通过readtext读出来,但读出来的信息,怎么用php的函数调用出来呢?用sybase_query()发出readtext后,没办法用sybase_fetch_row()取出来。

 icebolt 回复于:2002-10-24 13:16:57 希望高手指点,还有如果用image字段存储flash之类的东西,可以吗?

 icebolt 回复于:2002-10-24 13:32:30 代码是这样的:
$link=sybase_connect($hostname,$username,$password) or die("无法连接数据库服务器!";
$db=sybase_select_db($databasename,$link) or die("无法连接用户数据库—userdb!";
$query ="declare @val varbinary(16)\n";
$query.="select @val=textptr(textstring) from $tablename where id=2 \n";
$query.="readtext $tablename.textstring @val 1 1000";
$result=sybase_query($query) or die("无法执行SQL:$query";
$arr = sybase_fetch_array($result);

 icebolt 回复于:2002-10-24 15:30:47 怎么取出来给php请各位高手指点


 icebolt 回复于:2002-10-26 15:40:35 已经解决了,以后有问题的,请和我联系,谢谢大家对我的帮忙

 晴天羽 回复于:2002-11-12 11:35:18 那我怎么才能把图片文件赋给变量testptr?就是说我不知道怎么使用readtext?

 晴天羽 回复于:2002-11-13 10:44:54 用writetext时,该字段不能为空,就是teststring不能为空,不然不能插入数据,不知道这样说对不对?不过,不知道怎么用readtext操作。


 晴天羽 回复于:2002-11-15 10:30:46 怎样打开文件?

 icebolt 回复于:2002-11-21 15:24:15 你是说用php吗?

 晴天羽 回复于:2002-11-25 16:09:39 用php和c++都可以的。

 kateyan 回复于:2003-01-06 12:16:23 表的结构为(id,texttxt(text类的)),要将所有texttxt的值赋为id=1时的texttxt值,不知道语句该如何写

打印本文 打印本文 关闭窗口 关闭窗口