久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何復制Image字段數據到新表同樣的字段內

170次閱讀
沒有評論

共計 4218 個字符,預計需要花費 11 分鐘才能閱讀完成。

本篇文章給大家分享的是有關如何復制 Image 字段數據到新表同樣的字段內,丸趣 TV 小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著丸趣 TV 小編一起來看看吧。

最近在寫一個升級程序,其中要求將一個舊數據庫里面的所有的照片都轉到新數據庫。暫且把舊數據庫叫 OldDB, 新數據庫叫 NewDB, 新數據庫里面的字段為【Photo】, 舊數據庫叫【Picture】。下面丸趣 TV 丸趣 TV 小編來講解下如何復制 Image 字段數據到新表同樣的字段內?

如何復制 Image 字段數據到新表同樣的字段內

先讀出舊數據庫里的數據,然后用 insert into 插入:

insert into[table1] values(rs( Picture) )

后來發現不行,我以為數據類型搞錯了,改了下代碼,如下:

insert into[table1] values(‘rs( Picture)’)

多加了一對單引號,系統還是提示錯誤。以下為存儲過程:

CENTER ccid_nobr

table width= 400 border= 1 cellspacing= 0 cellpadding= 2 bordercolorlight = black bordercolordark = #FFFFFF align= center

tr

td bgcolor= e6e6e6 >

pre ccid_code

if exists (select * from dbo.sysobjects

where id = object_id(N [dbo].[sp_textcopy] )

and OBJECTPROPERTY(id, N IsProcedure) = 1)

drop procedure [dbo].[sp_textcopy]

GO

SET QUOTED_IDENTIFIER OFF

GO

SET ANSI_NULLS OFF

GO

CREATE PROCEDURE sp_textcopy (

@srvname varchar (30),

@login varchar (30),

@password varchar (30),

@dbname varchar (30),

@tbname varchar (30),

@colname varchar (30),

@filename varchar (30),

@whereclause varchar (40),

@direction char(1))

AS

DECLARE @exec_str varchar (255)

SELECT @exec_str =

textcopy /S + @srvname +

/U + @login +

/P + @password +

/D + @dbname +

/T + @tbname +

/C + @colname +

/W + @whereclause +

/F + @filename +

/ + @direction

EXEC master..xp_cmdshell @exec_str

GO

SET QUOTED_IDENTIFIER OFF

GO

SET ANSI_NULLS ON

GO

/ccid_code /pre

/td

/tr

/table

/ccid_nobr /CENTER

這是調用 textcopy 將圖片數據導入和導出的語句,我原打算新舊數據庫調用同一個存儲過程,舊數據庫先將數據導出到硬盤,新數據庫在導入。在測試以后,發現不成功,頁面顯示不出數據,單獨用 textcopy 測試還是可以導出數據的,但在程序中調用,沒有成功。我接下來換成下面的存儲過程:

CENTER ccid_nobr

table width= 400 border= 1 cellspacing= 0 cellpadding= 2 bordercolorlight = black bordercolordark = #FFFFFF align= center

tr

td bgcolor= e6e6e6 >

pre ccid_code

if exists (select * from dbo.sysobjects

where id = object_id(N [dbo].[sp_imageio] )

and OBJECTPROPERTY(id, N IsProcedure) = 1)

drop procedure [dbo].[sp_imageio]

GO

SET QUOTED_IDENTIFIER OFF

GO

SET ANSI_NULLS OFF

GO

Create proc p_binaryIO

@servename varchar (30),

– 服務器名稱

@username varchar (30),

– 用戶名

@password varchar (30),

– 密碼

@tbname varchar (500),

– 數據庫.. 表名

@fdname varchar (30),

– 字段名

@fname varchar (1000),

– 目錄 + 文件名, 處理過程中要使用 / 覆蓋:@filename+_temp

@tj varchar (1000)= ,

– 處理條件. 對于數據導入, 如果條件中包含 @fdname, 請指定表名前綴

@isout bit=1 –1 導出 ((默認),0 導入

AS

declare @fname_in varchar(1000)

–bcp 處理應答文件名

,@fsize varchar(20)

– 要處理的文件的大小

,@m_tbname varchar(50)

– 臨時表名

,@sql varchar(8000)

– 則取得導入文件的大小

if @isout=1

set @fsize= 0

else

begin

create table #tb(可選名

varchar(20), 大小 int

, 創建日期 varchar(10), 創建時間

varchar(20)

, 上次寫操作日期 varchar(10),

上次寫操作時間 varchar(20)

, 上次訪問日期 varchar(10),

上次訪問時間 varchar(20), 特性 int)

insert into #tb

exec master..xp_getfiledetails @fname

select @fsize= 大小 from #tb

drop table #tb

if @fsize is null

begin

print 文件未找到

return

end

end

– 生成數據處理應答文件

set @m_tbname=

[##temp +cast(newid() as varchar(40))+ ]

set @sql= select * into +@m_tbname+ from(

select null as 類型

union all select 0 as 前綴

union all select +@fsize+ as 長度

union all select null as 結束

union all select null as 格式

) a

exec(@sql)

select @fname_in=@fname+ _temp

,@sql= bcp +@m_tbname+ out +@fname_in

+ /S +@servename

+case when isnull(@username,)= then

else /U +@username end

+ /P +isnull(@password,)+ /c

exec master..xp_cmdshell @sql

– 刪除臨時表

set @sql= drop table +@m_tbname

exec(@sql)

if @isout=1

begin

set @sql= bcp select top 1 +@fdname+ from

+@tbname+case isnull(@tj,) when then

else where +@tj end

+ queryout +@fname

+ /S +@servename

+case when isnull(@username,)= then

else /U +@username end

+ /P +isnull(@password,)

+ /i +@fname_in+

exec master..xp_cmdshell @sql

end

else

begin

– 為數據導入準備臨時表

set @sql= select top 0 +@fdname+ into

+@m_tbname+ from +@tbname

exec(@sql)

– 將數據導入到臨時表

set @sql= bcp +@m_tbname+ in +@fname

+ /S +@servename

+case when isnull(@username,)= then

else /U +@username end

+ /P +isnull(@password,)

+ /i +@fname_in+

exec master..xp_cmdshell @sql

– 將數據導入到正式表中

set @sql= update +@tbname

+ set +@fdname+ =b. +@fdname

+ from +@tbname+ a,

+@m_tbname+ b

+case isnull(@tj,) when then

else where +@tj end

exec(@sql)

– 刪除數據處理臨時表

set @sql= drop table +@m_tbname

end

– 刪除數據處理應答文件

set @sql= del +@fname_in

exec master..xp_cmdshell @sql

GO

SET QUOTED_IDENTIFIER OFF

GO

SET ANSI_NULLS ON

GO

/ccid_code /pre

/td

/tr

/table

/ccid_nobr /CENTER

如何復制 Image 字段數據到新表同樣的字段內

這個存儲過程,基本原理其實和上面的是一樣的。我先測試導出,在程序中運行后,不斷刷新保存導出圖片的文件夾,發現系統確實產生了數據,以文件 +tmp 的命名方式存放,但不知道為什么,系統運行完畢,所有的圖片還是沒有。這條路看來不通。

帖子發出來以后,很快有人回復。但是回復的答案就是我找到的兩個存儲過程的。看來問題可能無法解決。

但是任務還是的完成,最后萬般無奈之下,我給認識的一位大俠發了求救信,他只是提供了一條思路,用流的方式寫入。我按照這個思路,抱著試試看的心情,將代碼改成如下的樣式:

set rs2=Server.CreateObject(Adodb.Recordset)

sql2= select top 1 * from [User] order by UserID desc

rs2.open sql2,cn,1,3

rs2(Photo).AppendChunk rs(Picture1)

rs2.update

rs2.close

set rs2=nothing

以上就是如何復制 Image 字段數據到新表同樣的字段內,丸趣 TV 小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-28發表,共計4218字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 礼泉县| 新蔡县| 丹巴县| 洪洞县| 崇文区| 张家港市| 曲靖市| 洪江市| 巫山县| 大竹县| 公安县| 和田县| 罗田县| 台中县| 新干县| 高要市| 兰州市| 锦州市| 镇远县| 双江| 临朐县| 宜昌市| 忻城县| 内江市| 澄江县| 瑞丽市| 仲巴县| 改则县| 桐梓县| 陆河县| 磴口县| 仪征市| 土默特左旗| 米脂县| 上林县| 深州市| 随州市| 德令哈市| 抚顺县| 剑阁县| 灵寿县|