读书人

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

发布时间: 2013-08-25 10:49:56 作者: rapoo

将海量本地文件夹图片导入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如何存图片的原理,是转换成二进制存的

读书人网 >SQL Server

热点推荐