利用DELPHI将数据库中某个表中的部分数据导出为一个特殊的文件,以后还可以将这个文件再导进这个表中,请问如何实现?
我看过一个考试系统他们就是这么做的,在表中选择一部分记录导出一个格式为.tiku的文件,以后还可以将这个.tiku的文件再导进这个表中
请高手帮忙,在线等,谢谢!
我用的SQL Server 2000数据库

解决方案 »

  1.   

    方法1:直接在DELPHI中使用下面得sql语句控制导入和导出(推荐)方法2:s根据条件elect之后,历遍数据集,写入文件。 /*******  导出到excel 
    EXEC master..xp_cmdshell ’bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""’ /***********  导入Excel 
    SELECT * 
    FROM OpenDataSource( ’Microsoft.Jet.OLEDB.4.0’, 
      ’Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0’)...xactions 
    SELECT cast(cast(科目编号 as numeric(10,2)) as nvarchar(255))+’ ’ 转换后的别名 
    FROM OpenDataSource( ’Microsoft.Jet.OLEDB.4.0’, 
      ’Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0’)...xactions /** 导入文本文件 
    EXEC master..xp_cmdshell ’bcp "dbname..tablename" in c:\DT.txt -c -Sservername -Usa -Ppassword’ /** 导出文本文件 
    EXEC master..xp_cmdshell ’bcp "dbname..tablename" out c:\DT.txt -c -Sservername -Usa -Ppassword’ 
    或 
    EXEC master..xp_cmdshell ’bcp "Select * from dbname..tablename" queryout c:\DT.txt -c -Sservername -Usa -Ppassword’ 导出到TXT文本,用逗号分开 
    exec master..xp_cmdshell ’bcp "库名..表名" out "d:\tt.txt" -c -t ,-U sa -P password’ 
    BULK INSERT 库名..表名 
    FROM ’c:\test.txt’ 
    WITH ( 
        FIELDTERMINATOR = ’;’, 
        ROWTERMINATOR = ’\n’ 

    --/* dBase IV文件 
    select * from 
    OPENROWSET(’MICROSOFT.JET.OLEDB.4.0’ 
    ,’dBase IV;HDR=NO;IMEX=2;DATABASE=C:\’,’select * from [客户资料4.dbf]’) 
    --*/ --/* dBase III文件 
    select * from 
    OPENROWSET(’MICROSOFT.JET.OLEDB.4.0’ 
    ,’dBase III;HDR=NO;IMEX=2;DATABASE=C:\’,’select * from [客户资料3.dbf]’) 
    --*/ --/* FoxPro 数据库 
    select * from openrowset(’MSDASQL’, 
    ’Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\’, 
    ’select * from [aa.DBF]’) 
    --*/ /**************导入DBF文件****************/ 
    select * from openrowset(’MSDASQL’, 
    ’Driver=Microsoft Visual FoxPro Driver; 
    SourceDB=e:\VFP98\data; 
    SourceType=DBF’, 
    ’select * from customer where country != "USA" order by country’) 
    go 
    /***************** 导出到DBF ***************/ 
    如果要导出数据到已经生成结构(即现存的)FOXPRO表中,可以直接用下面的SQL语句 insert into openrowset(’MSDASQL’, 
    ’Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\’, 
    ’select * from [aa.DBF]’) 
    select * from 表 说明: 
    SourceDB=c:\  指定foxpro表所在的文件夹 
    aa.DBF        指定foxpro表的文件名.  
    /*************导出到Access********************/ 
    insert into openrowset(’Microsoft.Jet.OLEDB.4.0’, 
       ’x:\A.mdb’;’admin’;’’,A表) select * from 数据库名..B表 /*************导入Access********************/ 
    insert into B表 selet * from openrowset(’Microsoft.Jet.OLEDB.4.0’, 
       ’x:\A.mdb’;’admin’;’’,A表) *********************  导入 xml 文件 DECLARE @idoc int 
    DECLARE @doc varchar(1000) 
    --sample XML document 
    SET @doc =’ 
    <root> 
      <Customer cid= "C1" name="Janine" city="Issaquah"> 
          <Order oid="O1" date="1/20/1996" amount="3.5" /> 
          <Order oid="O2" date="4/30/1997" amount="13.4">Customer was very satisfied 
          </Order> 
       </Customer> 
       <Customer cid="C2" name="Ursula" city="Oelde" > 
          <Order oid="O3" date="7/14/1999" amount="100" note="Wrap it blue 
                 white red"> 
                <Urgency>Important</Urgency> 
                Happy Customer. 
          </Order> 
          <Order oid="O4" date="1/20/1996" amount="10000"/> 
       </Customer> 
    </root> 
    ’ 
    -- Create an internal representation of the XML document. 
    EXEC sp_xml_preparedocument @idoc OUTPUT, @doc -- Execute a SELECT statement using OPENXML rowset provider. 
    SELECT * 
    FROM OPENXML (@idoc, ’/root/Customer/Order’, 1) 
          WITH (oid     char(5), 
                amount  float, 
                comment ntext ’text()’) 
    EXEC sp_xml_removedocument @idoc 
      

  2.   

    google一下“导入导出语句大全”
    如果不想直接导出,就用delphi写文件,需要用到tfile类吧
      

  3.   

    谢谢wudi_1982(︻┳═一酒可千日不饮,但不可一饮不醉),我想要的是导出一个特殊文件,比如导出一个*.tiku,不想导出到Excel或Access中,那样数据很容易就被别人看到了, 请问谁还有方法
      

  4.   

    SDQDboy(新手,请指教):
    看文件类型不能仅仅看后缀名的,有时后缀名只是骗人的小把戏而已。
    举个例子:
    你写了一个程序:其中数据库为 DB1.mdb (一个Access数据库文件),但是你不想让人们一眼就看出你是用Access数据库,那么你可以把DB1.mdb的文件名改为 DB1.data 或 otr.dll 或 otr.gfd 或 otr.tiku ......(后缀名可以随便改,最好不要用常见的后缀名)
    所以你明白了吧!
    后缀名为 tiku 极有可能是个榥子而已,至于到底是什么文件类型,那你就要分析分析了!
    哈哈!
    如果说错了,你就当我说笑话吧!呵呵!!
      

  5.   

    抽空研究一下文件的结构,文件的各种类型!
    然后彻底理解什么是文件,到时你就会明白了!(不过可以先告诉你,到那时你应该认为所有的文件都是二进制流而已,至于为什么不同类型的文件会会被不同程序执行,呈现不同的景像,不同的状态,常见的文件类型(*.txt ,*.doc ,*.xls, *.mdb)默认会被某个程序执行(记事本,word,Excel,Access),那是你自已要去弄明白的)。
    呵呵!希望对你会有用处!
      

  6.   

    之间用ADODataset save成一个文件就可以了