不支持对 BLOB 值执行基于查询的插入或更新操作。

tesling 2007-06-20 11:13:53
执行下列语句:
select * into #tmp1 from d_ml_cgml
insert into openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=D:\mydatabase\ff\','select * from cgml.dbf') select * from #tmp1
drop table #tmp1

出错:
服务器: 消息 7399,级别 16,状态 1,行 2
OLE DB 提供程序 'MSDASQL' 报错。
[OLE/DB provider returned message: 不支持对 BLOB 值执行基于查询的插入或更新操作。]

目标表cgml.dbf中有一个字段是blob类型的。请问怎么解决这个问题,谢谢。
...全文
762 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuyuqi_starsky 2007-12-12
  • 打赏
  • 举报
回复
可以把TEXT类型该成VARCHAR(8000)---超过部分截取
liuyuqi_starsky 2007-12-12
  • 打赏
  • 举报
回复
blob类型是text,ntext,和image类型,可存储超过8388602bytes
tesling 2007-06-21
  • 打赏
  • 举报
回复
列出还是不行。
难道对blob类型的数据就这样束手无策,汗
使用.net程序,读一条写入一条,效率低得无以复加,经常超时
各位帮帮忙。
Andy-W 2007-06-21
  • 打赏
  • 举报
回复
blob类型不知道对应哪一数据类型了,baidu看看
Andy-W 2007-06-21
  • 打赏
  • 举报
回复
已经告诉楼主
insert into openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=D:\mydatabase\ff\','select * from cgml.dbf')
这里错误。
具体错误是因为'select * from cgml.dbf'这query语句,要是能使用表名体现可以解决。否则就使用DTS导入了。
lang8134 2007-06-21
  • 打赏
  • 举报
回复
先insert
再updateblob
tesling 2007-06-21
  • 打赏
  • 举报
回复
tesling 2007-06-20
  • 打赏
  • 举报
回复
sqloledb只能用于连接sql server数据库吧,
那样写报错
服务器: 消息 7399,级别 16,状态 1,行 4
OLE DB 提供程序 'sqloledb' 报错。
[OLE/DB provider returned message: 无效的授权说明]
[OLE/DB provider returned message: 连接字符串属性无效]
bill024 2007-06-20
  • 打赏
  • 举报
回复
try:
select * into #tmp1 from d_ml_cgml
insert into openrowset('sqloledb','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=D:\mydatabase\ff\','select * from cgml.dbf') select * from #tmp1
drop table #tmp1
tesling 2007-06-20
  • 打赏
  • 举报
回复
我的表里有text类型,但是使用select * into #tmp1 from d_ml_cgml没有报错,我就是把内容存到一个临时表然后再转移到foxpro的,好像仍然不行
肥胖的柠檬 2007-06-20
  • 打赏
  • 举报
回复
你的源數據表中應該有 ntext 或 text、image 之類的超大型字段,如果有, Select into的方式好象是不支持的,因為這幾種類型SQL Server 是以物殊指針類型來處理的,而Select Into 方式不能支持指針方式轉換。
解決辦法可以先建好一張格式完全相同的數據表,然後用 insert into(Fields List) Select ********** 的方式來轉移。
tesling 2007-06-20
  • 打赏
  • 举报
回复
不行,提示的错误还是老样子。
lwl0606 2007-06-20
  • 打赏
  • 举报
回复
前面加一个这个 看行不
EXEC sp_tableoption 'd_ml_cgml', 'text in row', 'ON'
free_pop2k 2007-06-20
  • 打赏
  • 举报
回复
最好用DTS做.
Andy-W 2007-06-20
  • 打赏
  • 举报
回复
insert into openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=D:\mydatabase\ff\','select * from cgml.dbf')

知道这里错误。
对于FoxPro 没有用过,楼主可以参考插入ACCESS数据库方法,修改:

INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'c:\Test.mdb';'admin';'', A) (T)
SELECT 'd'
/*
Test是ACCESS数据库,它含有表A。向A表的列T,插入一个值'd';
*/

是于FoxPro可以这样修改看看:
insert into openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=D:\mydatabase\ff\','gml.dbf') (列列表)
SELECT .... FROM ...
tesling 2007-06-20
  • 打赏
  • 举报
回复
高手高手高手,求救啊!
tesling 2007-06-20
  • 打赏
  • 举报
回复
沉了?

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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