首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

将洪量本地文件夹图片导入sql server

2013-08-25 
将海量本地文件夹图片导入sql server下面这个方法我看不太懂啊,如果我有一万张图片,岂不是要写一万条goins

将海量本地文件夹图片导入sql server
下面这个方法我看不太懂啊,如果我有一万张图片,岂不是要写一万条
go
insert photo_insert values(8009,0x) -- image字段必须的,且不是null
insert photo_insert values(8010,0x) -- image字段必须的,且不是null
go了???
我就想把c;\images 中的image00000.png--image10000.png名字和图片导入到表images(ID,IMAGES)中,谁能给我说下下面的代码怎么改啊,或者其他具体办法~~c#我也没学啊将洪量本地文件夹图片导入sql server
--1、建立存储过程
CREATE PROCEDURE sp_textcopy (
  @srvname    varchar (30),
  @login      varchar (30),
  @password    varchar (30),
  @dbname      varchar (30),
  @tbname      varchar (30),
  @colname    varchar (30),
  @filename    varchar (50),
  @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


--2、建表和初始化数据(jobnumber字段要为文本型)
create table photo_insert (jobnumber varchar(20),photo image)
go
insert photo_insert values(8009,0x) -- image字段必须的,且不是null
insert photo_insert values(8010,0x) -- image字段必须的,且不是null
go

--xp_cmdshell功能默认是关闭的,需开启
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;


--3、读入
sp_textcopy 'LSQ','sa','data20101203','master','photo_insert','photo','e:\beauty01.jpg','where jobnumber=8009','I'  --注意条件是 工号=8009
go

--4、读出成文件
sp_textcopy 'LSQ','sa','data20101203','master','photo_insert','photo','e:\beauty001.jpg','where jobnumber=8009','O' --注意条件是 工号=8009
go






/*==========创建临时表=========== */
if object_id('#photo_Tmp') is not null drop table #photo_Tmp  --删除临时表
create table #photo_Tmp          --创建临时表#photo_Tmp
(ID int IDENTITY (1,1) not null, --创建列ID,并且每次新增一条记录就会加1
 jobnumber  varchar(20),                 --工号字段
 photo image,                    --图片二进制字段
 primary key (ID)                --定义ID为临时表#photo_Tmp的主键      
);
insert into #photo_Tmp Select * from photo_insert    --把数据插入到临时表
/*==========创建临时表=========== */


/*==========创建循环批量导入图片=========== */
declare @i int
declare @count int
declare @filename  varchar(255)
declare @condition varchar(255)
set @i=1
set @count=(select COUNT(*) from #photo_Tmp)
while @i<=@count
begin
set @filename='e:\'+(select jobnumber from #photo_Tmp where ID=@i)+'.jpg'
set @condition='where jobnumber='+(select jobnumber from #photo_Tmp where ID=@i)
exec('sp_textcopy ''LSQ'',''sa'',''data20101203'',''master'',''photo_insert'',''photo'','''+@filename+''','''+@condition+''',''I''')
set @i=@i+1
end 
/*==========创建循环批量导入图片=========== */
sql? 海量 图片
[解决办法]

引用:
我们老师要给了一个任务,让把图片存入sql server,但是我自己查的才知道有两种方法存~~他说用c#或t-sql,那意思是不是应该转换成二进制存啊

原来是这样啊。网上这样的例子多啦。但主要用的是C#编程。编程过程中涉及到与数据库交互。用C#获取某一目录下的所有文件信息,直接读取成二进制,连接数据库,存储到数据表中。参考:
http://wenku.baidu.com/view/05965b7d5acfa1c7aa00ccdf.html
[解决办法]
网上找C#转图片成二进制存入数据库的例子吧,这个拿来叫作业比较合适
------解决方案--------------------


既然是海量的图片,那就不要直接存到数据库里了,强烈建议只存路径了
当然楼主要弄懂sql如何存图片的原理,是转换成二进制存的

热点排行