急急急!!关于SQL SERVER里的IMAGE类型和ORCALE里的BLOBl类型!!!!

zxy1980 2003-10-16 07:53:28
sqlserver里有一个表的字段是image型,oracle里有个表的字段是blob型,想问用sql语句在delphi里面怎么样才可以把sqlserver里image型字段的内容插入到oracle里blob型字段呢?急,等待赐教 !!!!!!!!!!!!
...全文
77 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
dickeybird888 2003-10-17
  • 打赏
  • 举报
回复
窗体的最下面有个管理,点管理,然后就可以给分,

别忘记在"码"后面的编辑框输入你登陆的密码!
(·¥·)
zxy1980 2003-10-17
  • 打赏
  • 举报
回复
各位谢谢呀,我试试,

可是我怎么给分呢,谁能告诉我,我不知道在哪能给呀,
kevin218 2003-10-17
  • 打赏
  • 举报
回复
主要是两个函数的用法:getmem和getdata()
var
t1:array[0..10] of pchar;
i,s1,s2:integer;
str1,str2,sSql:string;
begin
i:=0;
while adotable1.Eof=false do begin
str1:=adotable1.FieldValues['userid'];
sSql:='insert into p2(userid) select userid from p1 where '+str1+' not in (select userid from p2)';
adoconnection1.Execute(sSql);
if adotable1.FieldByName('pic').IsBlob then
begin
getmem(t1[i],s1);
if adotable1.FieldByName('pic').GetData(t1[i]) then
adotable2.Fields[1].GetData(t1[i])
else
showmessage('图像 is null');
freemem(t1[i]);
end;
i:=i+1;
adotable1.Next;
end;
zcfzcf001 2003-10-17
  • 打赏
  • 举报
回复
我点了,怎么还是这页呀,没有什么编辑框呀,在哪呢?
风轻狂 2003-10-17
  • 打赏
  • 举报
回复
你的Oracle客户端的版本是不是太低了
huojiehai 2003-10-16
  • 打赏
  • 举报
回复
楼主,你要改一下呀,你要写入SQL语句再打开呀,你要变通一下

hmily1688(流浪在中国) 说得对,blob size还要设置大一些

注意Query2中的SQL语句要全部大写,由于requestlive设为了true,否则就会报错 Query1最好也全部大写
hmily1688 2003-10-16
  • 打赏
  • 举报
回复
把query2中加入固定字段,把blob size,设置为10240试试
zxy1980 2003-10-16
  • 打赏
  • 举报
回复
Query2.Open;提示‘无法识别的数据类型’
zxy1980 2003-10-16
  • 打赏
  • 举报
回复
Query2.Open;提示‘无法识别的数据’
zxy1980 2003-10-16
  • 打赏
  • 举报
回复
不是呀,Query2.Open根本就打不开
huojiehai 2003-10-16
  • 打赏
  • 举报
回复
还另一种方法是(学一招吧):

假设query1连接的是SQL SERVER , Query2连接的是oracle相同的表。
以下是从sql server批量导入oracle中,不管字段是什么类型都行(包括Blob)
var
lp: integer;
begin
Query1.Open;
Query2.Open;
Query1.first;
while not Query1.eof do
begin
query2.Append;
for lp := 0 to Query1.Fields.Count - 1 do
query2.fieldbyname(Query1.Fields[lp].FieldName).AsVariant :=
query1.fieldbyname(Query1.Fields[lp].FieldName).AsVariant;
query2.Post;
Query1.Next;
end;
end;
huojiehai 2003-10-16
  • 打赏
  • 举报
回复
oracle中文件大时不能像SQL SERVER中loadfromfile,应该用
http://haitian.myrice.com/OracleBlob.htm
hmily1688 2003-10-16
  • 打赏
  • 举报
回复
好像是不太现实吧,你用循环吧,一条一条的添加,嘻嘻,
zxy1980 2003-10-16
  • 打赏
  • 举报
回复
楼上的大哥呀!
能不能在不建数据流的情况下实现!
因为我一次有很多条记录要插入
gdwyh 2003-10-16
  • 打赏
  • 举报
回复
更正一下,上面的ADOTABLE全部改为ADOQUERY,对不起,一时疏忽.
zxy1980 2003-10-16
  • 打赏
  • 举报
回复
在orcale里blob类型是不能用select * from 表名 来打开的,
gdwyh 2003-10-16
  • 打赏
  • 举报
回复
用ADO,ADOTABLE1为MSSQL表,ADOTABLE2为ORACLE表.
adotable1.close;
adotable1.sql.clear;
adotable1.sql.add(<sql语句>);
adotable1.open;
(adotable1.fieldByName('wordfile') AS TBlobField).SaveToFile(路径\文件名);
adotable2.close;
adotable2.sql.clear;
sql.Add('insert into 表名(字段名) values(:变量名)');
adotable2.parameters.Items[0].LoadFromFile(路径\文件名,ftBlob);
adotable2.execsql;
zxy1980 2003-10-16
  • 打赏
  • 举报
回复
问题是我现在连ORCALE里的那个表都大不开,
Shy_qry.Edit根本不行,
必须用execsql来执行!
怎么办呀?
hmily1688 2003-10-16
  • 打赏
  • 举报
回复
以上是sql server的,你自己改一下吧
hmily1688 2003-10-16
  • 打赏
  • 举报
回复
用内存流吧,oracle我不熟,blob是二进制类型吧,
var
ms: TStringStream;
File_Type: string;
begin
if not (Shy_qry.eof and Shy_qry.bof) then
begin
ms := TStringStream.Create('');
OpenPictureDialog1.InitialDir := sm_directory;
if (OpenPictureDialog1.Execute) and (trim(OpenPictureDialog1.filename) <> '') then
begin
File_Type := ExtractFileExt(OpenPictureDialog1.filename);
if UpperCase(File_Type) <> '.JPG' then
begin
OpenPictureDialog1.Filename := BmpToJpg(OpenPictureDialog1.filename);
end;
Image1.picture.loadfromfile(OpenPictureDialog1.filename);
Image1.Picture.Graphic.SaveToStream(ms);
if not (Shy_qry.State in [dsedit, dsinsert]) then
begin
Shy_qry.Edit;
end;
Shy_qry.Fieldbyname('photo_type').AsString := Copy(OpenPictureDialog1.filename, length(OpenPictureDialog1.filename) - 2, 3);
Ms.Position := 0;
(Shy_Qry.Fieldbyname('photo') as Tblobfield).LoadFromStream(ms);
if Shy_Qry.State in [dsedit] then
begin
Shy_qry.Post;
end;
end;
ms.Free;
end
加载更多回复(2)
Re: Mycat 实现 MySQL的分库分表、读写分离、主从切换 =============================# MyCAT 作用是能够代替昂贵的oracle的MySQL集群中间件。     1) 一个彻底开源的,面向企业应用开发的“大数据库集群”    2) 支持事务、ACID、可以替代Mysql的加强版数据库    3) 一个可以视为“MySQL”集群的企业级数据库,用来替代昂贵的Oracle集群(核心价值观) (即:可不用 Orcale数据库及RAC等,以此代替)    4) 一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQL Server    5) 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品    6) 一个数据库中间件产品 # MyCAT 目标:    1) 低成本的将现有的单机数据库和应用,平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。从这一点介绍上来看,能满足数据库数据大量存储,提高了查询性能。    2) MyCat在大数据方面的运用不容小觑啊。 # MyCAT 特性    1) 支持 SQL 92标准    2) 支持Mysql集群,可以作为Proxy使用    3) 支持JDBC连接ORACLE、DB2、SQL Server,将其模拟为MySQL Server使用    4) 支持galera for mysql集群,percona-cluster或者mariadb cluster, (提供高可用性数据分片集群)    5) 自动故障切换,高可用性(failover & HA)    6) 支持读写分离,支持Mysql双主多从,以及一主多从的模式    7) 支持全局表,数据自动分片到多个节点,用于高效表关联查询    8) 支持独有的基于E/R 关系的分片策略,实现了高效的表关联查询    9) 多平台支持,部署和实施简单 # MyCAT 架构    用户可以把MyCAT看作是一个数据库代理,用mysql客户端工具(如Navicat)和命令访问,其核心功能就是分库分表,即将一个大表水平分割为N个小表,真正的存储在后端Mysql服务器中或其它数据库中。      

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧