如何将文件写入数据库中,再将该数据导出为原来的文件..SQL语句如何实现?

解决方案 »

  1.   

    可利用textcopy.exe文件实现在数据库中存储/读取文件。textcopy.exe文件可以在SQL Server安装光盘中找到。
    在安装目录C:\Program Files\Microsoft SQL Server\MSSQL\Binn\下也有。
      

  2.   

    /*
    创建测试
    */
    create table test (id int, files image) --用image类型字段保存文件
    insert test select 1,0x --将文件保存到files字段时,必须先初始化为0x/*
    命令提示符下输入:
    */--将D:\01.doc文件保存到test.files,条件id=1
    textcopy /S"服务器名" /U 用户名 /P 密码 /D 数据库名 /T test /C files /W "where id=1" /F "D:\01.doc" /I--下面读出到E:\01.doc
    textcopy /S"服务器名" /U 用户名 /P 密码 /D 数据库名 /T test /C files /W "where id=1" /F "E:\01.doc" /O/*
    删除测试
    */
    --drop table test
      

  3.   

    --将textcopy.exe写成存储过程create procedure sp_textcopy
    @Server    varchar(30), --服务器名
    @User      varchar(30), --用户名
    @Password  varchar(30), --密码
    @DBName    varchar(30), --数据库名
    @TBName    varchar(30), --表名
    @ColName   varchar(30), --存储文件的字段名
    @FileName  varchar(30), --要存取的文件名
    @Where     varchar(40), --条件
    @Direction varchar(1)   --I 为存储到数据库,O 从数据库中读出成文件
    as
    declare @Cmd varchar(255) 
    select @Cmd = 'textcopy /S"' + @Server + '" /U ' + @User + ' /P ' + @Password + ' /D ' + @DBName + ' /T ' + @TBName + ' /C ' + @ColName + ' /W "' + @Where + '" /F "' + @FileName + '" /' + @Direction
    exec master..xp_cmdshell @Cmd,no_output
    go
      

  4.   

    --保存
    exec sp_textcopy '服务器名','用户名','密码', '数据库', '表名', '列名', '文件名', 'where 条件','I'--读取
    exec sp_textcopy '服务器名','用户名','密码', '数据库', '表名', '列名', '文件名', 'where 条件','O'
      

  5.   

    除了textcopy外还有没有其他办法?本人处于局域网中,想本地将文件放到SQL服务器中,textcopy我试过好试有点问题........用bcp也不行,说找不到主流文件?
      

  6.   

    用BCP语句吧~语法很容易,自己去联机帮助上看看吧    bcp共有四个动作可以选择。
        (1) 导入。
        这个动作使用in命令完成,后面跟需要导入的文件名。
        (2) 导出。
        这个动作使用out命令完成,后面跟需要导出的文件名。
        (3) 使用SQL语句导出。
        这个动作使用queryout命令完成,它跟out类似,只是数据源不是表或视图名,而是SQL语句。
        (4) 导出格式文件。
        这个动作使用format命令完成,后而跟格式文件名导出:bcp "select * from dbDaily.dbo.aaaaa with (nolock) where 更新 between '%date%' and dateadd(day,1,'%date%')" queryout %folder%dbo.aaaaa.dat -S%SvNm% -U%Usr% -P%Pwd% -n导入:bcp dbDaily.account.aaaaa in dbo.aaaaa.dat       -S%SvNm% -U%Usr% -P%Pwd% -n -b1000
      

  7.   

    上网搜以下关于BCP的文章~~讲的比联机帮助通俗易懂