中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-10-13 11:18:17 來源:億速云 閱讀:308 作者:柒染 欄目:數據庫

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

  最近在寫一個升級程序,其中要求將一個舊數據庫里面的所有的照片都轉到新數據庫。暫且把舊數據庫叫OldDB,新數據庫叫NewDB,新數據庫里面的字段為【Photo】,舊數據庫叫【Picture】 。下面億速云小編來講解下如何復制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" 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將圖片數據導入和導出的語句,我原打算新舊數據庫調用同一個存儲過程,舊數據庫先將數據導出到硬盤,新數據庫在導入。在測試以后,發現不成功,頁面顯示不出數據,單獨用textcopy測試還是可以導出數據的,但在程序中調用,沒有成功。我接下來換成下面的存儲過程:

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

  --數據庫..表名

  @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字段數據到新表同樣的字段內,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

颍上县| 永兴县| 珠海市| 土默特左旗| 沅江市| 宜兴市| 忻州市| 库车县| 黄梅县| 云林县| 凭祥市| 石台县| 德令哈市| 北流市| 新河县| 清新县| 蛟河市| 上栗县| 百色市| 罗平县| 香格里拉县| 沈阳市| 双鸭山市| 将乐县| 莱阳市| 淮滨县| 龙山县| 延津县| 安岳县| 西华县| 同江市| 石柱| 南皮县| 罗平县| 桂林市| 佳木斯市| 观塘区| 年辖:市辖区| 明水县| 聂拉木县| 灯塔市|