利用TEXTCOPY.exe 上传一个目录中的所有文件到数据库中表

上传多个文件到数据库Image字段 (作者:Muthusamy Anantha Kumar aka The MAK)

/*
翻译:邹黎鹏(zlp321002)
有疑问联系:zlp321001@hotmail.com(作者根据自己工作需要稍微更改了一点批处理文件代码)

主要处理同一个目录文件入库:可以包括(Word,Excel,影象文件),直接插入数据库中表的IMAGE字段中.
表记录信息包括:
            文件标识、文件名称、二进制文件、上传客户机器名称、上传日期

/

这篇文章主要是介绍如何上传多个文件到数据库中的表,这里有很多方式,我介绍的是OSQL.EXE
使用TEXTCOPY.exe的方法

准备:
a: SQL Server 2000客户端必须安装在进行批处理的文件上
b: SQL 登录至少有DBO的权限

步骤一:

在"C:/"建立 C:/Upload 文件夹

步骤二:
把TextCopy.exe 拷贝到C:/Upload 文件夹里
TextCopy.exe 文件地址: /Program Files/Microsoft SQL Server/MSSQL/Binn

 

步骤三:
拷贝代码如下代码:
@ECHO off
cls
REM ECHO on
REM Objective: To upload all the files in the folder to SQL server as a table
REM Created by: MAK
REM Date: Nov 3, 2004
REM Contact: mak_999@yahoo.com
REM Check parameters
if "%1"=="" Goto noparmErr
if "%1"=="/?" Goto Help

REM assign variables
set Sourcefolder=%1
set servername=%2
set Databasename=%3
set loginname=%4
set password=%5
set LogFile=%6

Date/t > %6
time /t >> %6

REM Export DIR listing to C:/upload/Dirlist.txt
dir %1  /b > C:/upload/Dirlist.txt

OSQL /S%2 /U%4 /P%5 /d%3 /Q"if exists (select * from %3.dbo.sysobjects where id = object_id(N'[Myuploadtable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table %3.dbo.[Myuploadtable] " >> %6

OSQL /S%2 /U%4 /P%5 /d%3 /Q"create table %3.dbo.Myuploadtable (id int identity(1,1),filename varchar(500),ImageFiles Image,UploadPeople varchar(200) default host_name(),UploadTime datetime default Getdate() )" >> %6

FOR /F "usebackq delims==" %%i in (C:/upload/Dirlist.txt) do OSQL /S%2 /U%4 /P%5 /Q"insert into %3.dbo.Myuploadtable (filename,ImageFiles) values('%%i',' ') " >> %6


FOR /F "usebackq delims==" %%i in (C:/upload/Dirlist.txt) do c:/upload/textcopy.exe /S%2 /U%4 /P%5 /D%3 /Tmyuploadtable /CImagefiles /F"%1%%i" /I /W"where [filename]='%%i'" >> %6

GOTo END2

:noparmErr
Echo Usage help: example as follows
echo ...
Echo Objective: To upload all the files in the folder to SQL server Table
Echo Created by: MAK
Echo USAGE:
ECHO ....
ECHO ....
Echo %0 SourceFolder Servername Databasename Login Password LogFile
Goto END2

 

:Help
Echo Usage help: example as follows
echo ...
Echo Objective: To upload all the files in the folder to SQL server Table
Echo Created by: MAK
Echo USAGE:
ECHO ....
ECHO ....
Echo %0 SourceFolder Servername Databasename Login Password Logfile
Goto END2

:END
Echo "Compare Query results Completed" >>%LogFile%
date/t >> %LogFile%
time/t >> %LogFile%
goto END2

:END2

把代码另存在: C:/Upload/Upload.bat文件


步骤四:

执行批处理文件


步骤五:
使用正确的参数,然后执行这个批处理文件,如果正确执行了参数,这个批处理文件将被有效OSQL 建立[Myuploadtable] 表在给定数据库中,然后用同样的OSQL 有效的插入记录到表.记录数和源文件是一样的,表中文件名称是导入文件名称它将调用TEXTCOPY 有效和上传没一个文件在源文件夹到SQL Sever数据库表.

 

使用方法:
upload C:/sz/sz/ zehuadb SZ zlp zlp x.log


Parameters           Explained
Upload              - Batch File Name
C:/myfiles/         - Folder where all the source files are stored
SQL                 - SQL Server instance name where all the files are going to be uploaded
MyDB                - Database Name where all the files are going to be stored.
sa                  - Login name of SQL Server box
yeahright           - Password for the login sa
x.log               - Log file where all the process information is stored while executing this batch file

 

Select fileName from Myuploadtable.
==========================================
filename
0123StcdInfoQuery.htm
AddBaseData-1.htm
AddBaseData.htm
AddItemData.htm
AdminUserMentenlence.htm
default.html
default1.html
DeleteBaseData.htm
DeleteItemData.htm
DepartmentConfig-1.htm
.......

select * from Myuploadtable
=========================================
1 0123StcdInfoQuery.htm <Binary> ZLP 2005-11-23 20:20:43
2 AddBaseData-1.htm <Binary> ZLP 2005-11-23 20:20:44
3 AddBaseData.htm         <Binary> ZLP 2005-11-23 20:20:44
4 AddItemData.htm         <Binary> ZLP 2005-11-23 20:20:44
5 AdminUserMentenlence.htm<Binary> ZLP 2005-11-23 20:20:44
6 default.html         <Binary> ZLP 2005-11-23 20:20:44
.....................................................

步骤六:
更改表名:
sp_rename 'Myuploadtable','Prod_ImageTable'

当你再次运行导入时,它将删除[Myuploadtable]表,并重新建立该表,这就是我更表名的原因
导入文件的时候也将建立一个日志文件如下:
2005-11-23 星期三
20:30
(1 行受到影响)
(1 行受到影响)
(1 行受到影响)
..........
TEXTCOPY Version 1.0
DB-Library version 8.00.194
Data copied into SQL Server image column from file 'C:/sz/sz/0123StcdInfoQuery.htm'.
TEXTCOPY Version 1.0
DB-Library version 8.00.194
Data copied into SQL Server image column from file 'C:/sz/sz/AddBaseData-1.htm'.
TEXTCOPY Version 1.0
DB-Library version 8.00.194
..........
和一个Dirlist.txt文件,该文件主要记录导入文件记录名称
0123StcdInfoQuery.htm
AddBaseData-1.htm
AddBaseData.htm
AddItemData.htm
.........
结论:
这篇文章主要介绍如何把客户端某一个目录下的所有文件直接上传到数据库,不需要在服务器端生成文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
爬虫程序 网页文字抓取器 、软件特色: 1. 图形化的采集任务定义界面 你只需在软件内嵌的浏览器内用鼠标点选你要采集的网页内容即可配置采集任务,无需像其它同类软件一样面对复杂的网页源码去寻找采集规则。可以说是所见即所得的采集任务配置界面。 2. 创新的内容定位方式,定位更准确、稳定 同类软件基本上都是根据网页源码的前导标记和结束标记进行内容定位,这样一来,用户就不得不自己去面对网页制作人员才需要面对的HTML代码,付出更多额外的学习时间才能掌握软件的使用。同时,只要网页内容稍有变更(简单的如改变一下文字的颜色)定位标记即极有可能失效,导致采集失败。我们经过艰难的技术攻关,实现了全新的定位方式:结构定位和相对标志定位。大家都知道,一个网站的风格基本上是固定的,其同类网页内容的编排布局基本相同。这就是结构定位可行之处。当然基本相同不等于100%相同,不过,我们攻克了技术难关,消除了这些障碍。我们的定位方式的优势在于:1.用户只需用鼠标点击就可以配置采集任务,实现所见即所得的采集任务配置界面;2.网页内容的变化(如文字增减、变更,文字颜色、字体的变化等)不会影响采集的准确性。 3. 支持任务嵌套,可采集无限级的页面内容 只需在当前任务的页面选择指向你要采集的下级页面的链接,即可建立嵌套任务,采集下级页面的内容,且嵌套级数不限。这种便利都得益于我们全新的内容定位方式和图形化的采集任务配置界面。 4. 可同时采集任何内容 除了最基本的文字、图片、文件外,还可以采集针对具体HTML标签的源码、属性值等。 5. 强大的信息自动再加工能力 你可以在配置任务的时候,指定对采集到的内容进行任何的替换、筛选。 6. 可对采集到的内容进行自动排序 7. 支持采集结果保存到EXCEL和任意格式的文件 支持自定义文件模板。 8. 支持实时保存到数据库 支持ACCESS、SQLSERVER、MYSQL数据库(后续版本还将支持更多类型的数据库)。 9. 支持实时上传到网站服务器 支持POST和GET方式,可自定义上传参数,模拟人工提交 10. 支持实时保存到任意格式的文件 支持自定义模板,支持按记录保存和将多个记录保存到单个文件,支持大纲、明细式的保存(所有记录的某些内容保存到一个大纲文件,然后每条记录又单独保存到一个文件。 11. 支持多种灵活的任务调度方式,实现无人值守采集 12. 支持多任务,支持任务导入和导出

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值