none
sql server 2000 RRS feed

  • 问题

  • 怎样设定sql server2000从硬盘中读取文件进入数据表中,然后提供给应用程序使用?

    • 已移动 Jackie-Sun 2011年3月31日 7:23 (发件人:ADO.NET 与 LINQ)
    2011年3月31日 3:35

答案

  • 楼主提问时,注意把问题描述清楚是什么文件?

    -------------

    如果是Excel/txt/XML。。可以直接读取内容,如果是把文件存取在数据库以二进制的方式可以用textcopy.exe

    SQL2000用
    方法:
    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 (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 
    2、建表和初始化数据
    create table 表名 (编号 int,image列名 image)
    go
    insert 表名 values(1,0x)  -- 必须的,且不是null
    insert 表名 values(2,0x)  -- 必须的,且不是null
    go
    3、读入
    sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\图片.bmp','where 编号=1','I' --注意条件是 编号=1
    sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\bb.doc','where 编号=2','I' --注意条件是 编号=2
    go
    4、读出成文件
    sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\图片.bmp','where 编号=1','O' --注意条件是 编号=1
    sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\bb.doc','where 编号=2','O' --注意条件是 编号=2
    go
    ************如果报textcopy不是可执行文件的话,你就到
    C:\Program Files\Microsoft SQL Server\MSSQL\Binn
    目录下拷备 textcopy.exe到:
    C:\Program Files\Microsoft SQL Server\80\Tools\Binn
    SQL2005直接用
    INSERT INTO myTable(FileName, FileType, Photo) 
      SELECT 'Roy1.jpg' AS FileName, 
       '.JPG' AS FileType, 
       * FROM OPENROWSET(BULK N'C:\Roy1.jpg', SINGLE_BLOB) AS Document 
    

     

     
    ROY WU(吳熹)
    2011年4月3日 12:40
    版主

全部回复

  • 具体一点?
    想不想时已是想,不如不想都不想。
    2011年3月31日 8:41
    版主
  • 可以使用DTS完成这个工作。

     


    family as water
    2011年3月31日 13:02
  • Other options are bcp, bulk insert.
    2011年3月31日 13:04
  • ==============XML 内容===========
    <ROOT>
    <ITEM>
    <A>{data}</A>
    <B>{data2}</B>
    <C>{data3}</C>
    <ITEM>
    <ROOT>

    2.直接利用sql server 2005语句导入
    SELECT * into #WSTtemp FROM OPENROWSET(
    BULK '\\{FileServerIP}\test\test.xml' ,SINGLE_BLOB ) AS x
    DECLARE @hdoc int
    DECLARE @doc xml
    select @doc=BulkColumn from #WSTtemp
    EXEC sp_xml_preparedocument @hdoc OUTPUT,@doc
    insert into Table_Name(A,B,C)
    SELECT * FROM OPENXML (@hdoc, '/ROOT/TIEM',3)
    with (A numeric(13,3), B numeric(13,3), C varchar(50))--这句一定要和DB中Table 的ColumnsName对应
    exec sp_xml_removedocument @hdoc

    (参考:http://www.cnblogs.com/Nina-piaoye/archive/2008/05/07/1186499.html

    2011年4月3日 3:08
  • 楼主提问时,注意把问题描述清楚是什么文件?

    -------------

    如果是Excel/txt/XML。。可以直接读取内容,如果是把文件存取在数据库以二进制的方式可以用textcopy.exe

    SQL2000用
    方法:
    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 (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 
    2、建表和初始化数据
    create table 表名 (编号 int,image列名 image)
    go
    insert 表名 values(1,0x)  -- 必须的,且不是null
    insert 表名 values(2,0x)  -- 必须的,且不是null
    go
    3、读入
    sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\图片.bmp','where 编号=1','I' --注意条件是 编号=1
    sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\bb.doc','where 编号=2','I' --注意条件是 编号=2
    go
    4、读出成文件
    sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\图片.bmp','where 编号=1','O' --注意条件是 编号=1
    sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\bb.doc','where 编号=2','O' --注意条件是 编号=2
    go
    ************如果报textcopy不是可执行文件的话,你就到
    C:\Program Files\Microsoft SQL Server\MSSQL\Binn
    目录下拷备 textcopy.exe到:
    C:\Program Files\Microsoft SQL Server\80\Tools\Binn
    SQL2005直接用
    INSERT INTO myTable(FileName, FileType, Photo) 
      SELECT 'Roy1.jpg' AS FileName, 
       '.JPG' AS FileType, 
       * FROM OPENROWSET(BULK N'C:\Roy1.jpg', SINGLE_BLOB) AS Document 
    

     

     
    ROY WU(吳熹)
    2011年4月3日 12:40
    版主
  • try :BCP
    More: blog.csdn.net/happyflystone
    2011年4月3日 15:06