真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何復制Image字段數(shù)據(jù)到新表同樣的字段內(nèi)

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

10年積累的成都網(wǎng)站建設、成都做網(wǎng)站經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先網(wǎng)站設計后付款的網(wǎng)站建設流程,更有平房免費網(wǎng)站建設讓你可以放心的選擇與我們合作。

最近在寫一個升級程序,其中要求將一個舊數(shù)據(jù)庫里面的所有的照片都轉到新數(shù)據(jù)庫。暫且把舊數(shù)據(jù)庫叫OldDB,新數(shù)據(jù)庫叫NewDB,新數(shù)據(jù)庫里面的字段為【Photo】,舊數(shù)據(jù)庫叫【Picture】 。下面創(chuàng)新互聯(lián)小編來講解下如何復制Image字段數(shù)據(jù)到新表同樣的字段內(nèi)?

如何復制Image字段數(shù)據(jù)到新表同樣的字段內(nèi)

先讀出舊數(shù)據(jù)庫里的數(shù)據(jù),然后用insert into插入:

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

后來發(fā)現(xiàn)不行,我以為數(shù)據(jù)類型搞錯了,改了下代碼,如下:

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

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

CENTER>ccid_nobr>

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

tr>

td bgcolor="e6e6e6" class="code" >

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將圖片數(shù)據(jù)導入和導出的語句,我原打算新舊數(shù)據(jù)庫調用同一個存儲過程,舊數(shù)據(jù)庫先將數(shù)據(jù)導出到硬盤,新數(shù)據(jù)庫在導入。在測試以后,發(fā)現(xiàn)不成功,頁面顯示不出數(shù)據(jù),單獨用textcopy測試還是可以導出數(shù)據(jù)的,但在程序中調用,沒有成功。我接下來換成下面的存儲過程:

CENTER>ccid_nobr>

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

tr>

td bgcolor="e6e6e6" class="code" >

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),

--數(shù)據(jù)庫..表名

@fdname varchar (30),

--字段名

@fname varchar (1000),

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

@tj varchar (1000)='',

--處理條件.對于數(shù)據(jù)導入,如果條件中包含@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

,創(chuàng)建日期 varchar(10),創(chuàng)建時間

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

--生成數(shù)據(jù)處理應答文件

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

--為數(shù)據(jù)導入準備臨時表

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

+@m_tbname+' from ' +@tbname

exec(@sql)

--將數(shù)據(jù)導入到臨時表

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

--將數(shù)據(jù)導入到正式表中

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)

--刪除數(shù)據(jù)處理臨時表

set @sql='drop table '+@m_tbname

end

--刪除數(shù)據(jù)處理應答文件

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字段數(shù)據(jù)到新表同樣的字段內(nèi)

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

帖子發(fā)出來以后,很快有人回復。但是回復的答案就是我找到的兩個存儲過程的??磥韱栴}可能無法解決。

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

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字段數(shù)據(jù)到新表同樣的字段內(nèi),小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)頁標題:如何復制Image字段數(shù)據(jù)到新表同樣的字段內(nèi)
分享路徑:http://weahome.cn/article/pdchci.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部