从sql seever 2000(表名:abc)中将数据导出到abc.db中?

解决方案 »

  1.   

    1.DTS
    2.用2个ADO连接,2个Query,一个SQL读,一个写DB
      

  2.   

    2.TBatchMove控件的使用
        TBatchMove允许在一组记录或是整个数据表中执行特种作业,这
    个控件的主要用途在于把数据从服务器中卸到本地的数据源供分析或
    进行其他操作。TBatchMove可以在目的地建立对应于原数据表内容的
    数据表,自动将列名及数据类型进行适当的对应操作。
        TBatchMove两个特性指明批量移动(Batch Move)操作的源表及目
    的表。Source指定一个对应于已有的源数据表的数据集(一个Tquery
    或Ttable控件),Destination指明对应于一个数据库数据表的Ttable
    控件,目的数据表可以是已经存在的也可以是不存在的。
        Mode特性指明TBatchMove对象想要作的事情:
    表2
        我们可以根据batCopy模式,对数据库类型进行适当的转换,以下
    是从dBASE类型到其它类型的转换结果:
    表3    数据库转换举例
        现有用Foxbase开发的财务程序中的会计科目数据库(kjkmk.dbf)
    ,系统将升级到Window s环境下开发,数据库将采用Paradox语言。为
    了沿用该库结构和数据,可采用如下方法进行转换。    1.Datasource1控件:
          AutoEdit      True
          DataSet       Table1
          Enabled       True
          Name          DataSorce1    2.Table1控件:
          DatabaseName  cw
          Name          Table1
          Readonly      False
          TableName     KJKMK
          TableType     udBase
        Datasource1控件和Table1控件共同定义被转换的源文件,该文件
    是在别名为cw里的kjk mk,文件类型为Dbase。    3.BatchMove1控件:
          Destination   Table2
          Mode          balCopy
          Name          BatchMove1
          Sorce         Table1
        MatchMovel控件定义转换类型为Copy以及源文件、目标文件。
        4.Datasource2控件:
          AutoEdit      True
          DataSet       Table2
          Enabled       True
          Name          DataSorce2
        .Table2控件:
          DatabaseName  cwdb
          Name          Table2
          Readonly      False
          TableName     KJKMK
          TableType     uParadox
        Datasource2控件和Table2控件共同定义转换后的目标文件,该文
    件是在别名为cwdb里的kjkmk,文件类型为Paradox。    6.DbGrid1控件:
          Datasorce     Datasorce1
          Name          DbGridl
        DbGridl网格控件先定义源文件,执行转换后再定义目标文件,主
    要用于方便查看。
        7.Button1控件:
          OnClck        ButtonClck
          OndragDrop
          Ondragover
          OnEnddrag
        该控件有一个OnClick事件,表示执行文件类型转换。其代码如下
    :
        procedure TForm1.Button1Click(Sender:TObject);
        begin
        BatchMove1.execute;
        end;
        经上述方法定义,编译执行后,即可将kjkmk.dbf文件转换成kjkmk
    .db文件,然后就可以用Database Desktop工具对其进行修改调整。
        用此方法还可进行其它任意文件的转换。
      

  3.   

    使用TBatchMove这个控件我已经能够将db to dbf 或 dbf to db之间进行转换,但不知道怎么实现sql server 2000到db的转换方法.如果使用一条条的读再一条条的写不就太慢了吗?有没有更快的方法?
      

  4.   

    我记不清最近回过多少类似贴了,大富翁上有个很全的参考:
    http://www.delphibbs.com/keylife/iblog_show.asp?xid=19064
      

  5.   

    问题:异构数据库之间完全可以用SQL语句导数据。大家抛弃BatchMove吧 如果觉得好请Up一下,如果觉得不好也请Up一下 ( 积分:1, 回复:603, 阅读:32905 )
    分类:数据库-C/S型 ( 版主:qince, luyear )  
    来自:碧血剑, 时间:2003-3-18 16:33:00, ID:1691966 [显示:小字体 | 大字体]  
    告诉你一个最快的方法,用SQLServer连接DBF
    在SQLServer中执行
    SELECT * into bmk
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="e:\share";User ID=Admin;Password=;Extended properties=dBase 5.0')...bmk
    这样就可以把e:\share中的bmk.dbf表导入到Sqlserver中,
    速度是最快的
    上面这个方法DBF文件必须在服务器上,如果DBF不在服务器上,就用
    连接串
    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\temp;Extended Properties="dBase 5.0;";Persist Security Info=False
    SQL语句
    SELECT * into aaa IN [ODBC]
    [ODBC;Driver=SQL Server;UID=sa;PWD=;Server=127.0.0.1;DataBase=Demo;] 
    from aaa
    这是直接把客户端上的DBF传上服务器的最直接方法。把压箱底的方法都告诉大家
    在Form上放一个ADOConnection,连结指向目标Access库
    比如txt文件在c:\temp\aaaa.txt
    就执行
    ADOConnection.Connected := True;
    ADOConnection.Execute('Select * Into abcd From [Text;Database=c:\temp].aaaa.txt');
    就一切Ok了,这个方法一定行的,我好不容易才研究出来的
    有了这两个例子,异构数据库之间导数据的问题就举一反三,迎刃而解了。把Excel导入到Access中,同txt类似
    select * into <table name> from [excel 8.0;database=<filename>].[<sheetname>$]我最讨厌别人用BatchMove导数据了,明明一个SQL的事情,偏要
    我的目标是让大家抛弃BatchMoveProvider=MSDASQL.1;Extended Properties="Driver={Microsoft Visual Foxpro Driver};SourceType=DBF;SourceDB=你的文件所在路径;" 
     
    整理一下:解决了,我用的cb
    /*
     功能 :  Access To DBF
     ADOConnection2 => Access
     */
     sql = "SELECT * INTO jyjh in \"c:\\temp\"[dbase 5.0;] FROM jyjh";
     ADOConnection2->Execute(sql);c:\temp\aaa.dbf to Access,
    ADOConnection 指向Access
    语句是  select * into bbb from aaa in 'c:\temp' 'dbase 5.0;'在Form上放一个ADOConnection,连结指向目标Access库
    比如txt文件在c:\temp\aaaa.txt
    就执行
    ADOConnection.Connected := True;
    ADOConnection.Execute('Select * Into abcd From [Text;Database=c:\temp].aaaa.txt');将Oracle导入到文本文件
    连接串
    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\temp;Extended Properties="text;HDR=YES;";Persist Security Info=False
    SQL语句
    SELECT * into aaa.txt  FROM Tab1 IN [ODBC]
    [ODBC;Driver={Microsoft ODBC for Oracle};UID=oracle;PWD=oracle;SERVER=yourdata;]将Oracle导入到Access
    连接串
    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\temp\db1.mdb;Persist Security Info=False
    SQL语句
    SELECT * into tablename  FROM Tab1 IN [ODBC]
    [ODBC;Driver={Microsoft ODBC for Oracle};UID=oracle;PWD=oracle;SERVER=yourdata;]DBase 5.0
    DBASE IV
    FoxPro 3.0
    Paradox 7.X
    Excel 8.0
    text;HDR=YES;FMT=DelimitedSELECT * into aaa
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
     'Data Source="c:\temp\";User ID=Admin;Password=;Extended properties=Text')...[bb#txt]Excel联接ADO串
    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\temp\a.xls;Extended 
    Properties="Excel 8.0;HDR=Yes;";Persist Security Info=False
    Extended Properties参数属性这样写 Excel 5.0;HDR=YES;IMEX=1
    IMEX=1就是指混合型转换为文本
    SQLServer从Excel取数
    SELECT * 
    FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="C:\temp\b.xls";Extended Properties="Excel 5.0;HDR=Yes;";Persist Security Info=False')...sheet1$将SQLServer导入到文本文件
    连接串
    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\temp;Extended Properties="text;HDR=YES;";Persist Security Info=False
    SQL语句
    SELECT * into aaa.txt  FROM Tab1 IN [ODBC]
    [ODBC;Driver=SQL Server;UID=sa;PWD=;Server=127.0.0.1;DataBase=Demo;]
    要改变分隔符,可以修改
    Schema.ini文件。该文件中指明分割符,如: 
        [yourfile.txt] 
        ... 
        Format=Delimited(|) 
    更详细的例子可以参考:微软的Knowledge Base的文章:“Q149090 CC: How to Use Schema.ini for Accessing Text Data”和微软的Knowledge Base的文章:“Q187670 OWTO: Use RDO and ODBC Text Driver to Open a Delimited Text”。 txt导入SQLServer
    select * from OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};
    DefaultDir=c:\temp;','select * from aaaa.txt')sql server导出到access
    ADOConnection 指向Access
    SELECT * into table  FROM Tab1 IN [ODBC]
    [ODBC;Driver=SQL Server;UID=sa;PWD=;Server=127.0.0.1;DataBase=Demo;]sql server导出到excel
    ADOConnection 指向excel, 用Jet4.0 ,Extended properties设为Excel 8.0
    SELECT * into table  FROM Tab1 IN [ODBC]
    [ODBC;Driver=SQL Server;UID=sa;PWD=;Server=127.0.0.1;DataBase=Demo;]insert into gds_order select * from gds_order
    in [ODBC][ODBC;dsn=jbcmis;User Name=informix;password=informix;]用SQLServer连接DBF
    在SQLServer中执行
    SELECT * into bmk
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="e:\share";User ID=Admin;Password=;Extended properties=dBase 5.0')...bmk
    这样就可以把e:\share中的bmk.dbf表导入到Sqlserver中,Access 到 Access 
    select * into aaa from aaa in 'c::\temp\b.mdb'
    用ADOConnection.Execute执行对foxpro 6.0采取odbc,建立一个数据源
    insert into t_d(申请日期,发票序号,序号,申请号)
    SELECT 申请日期,发票序号,序号申请号
    from
     OPENROWSET('MSDASQL',
    'dsn=ddd;SourceDB=e:\d_pro\mail\poprec;SourceType=DBF'
    ,'select * from E:\d_pro\mail\poprec\d.dbf') as a --where 发票号 not in(select 发票号 from t_d)