W wendy_lwj Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-30 #21 能不能介绍一下“台湾联诠信息的转文件过帐组件”,它能不能直接用在三层结构中 的client端来传输数据呢???
J jojo Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-30 #22 OLEDB的全部资料在msdn中,编译新的oledb程序必须安装新的windows platform sdk。 随着DotNet的启动,专门针对SQL Server 2000的Fast Data Access速度将会更快。
OLEDB的全部资料在msdn中,编译新的oledb程序必须安装新的windows platform sdk。 随着DotNet的启动,专门针对SQL Server 2000的Fast Data Access速度将会更快。
Z zyzdy Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-30 #23 各位老大: 小弟再说清楚一点,事情原由是这样的,我从一个数据库产生一个DataSet数据集 我要将这个数据集装进另一个数据库(系统都不同,一个是AS400,另一个是SQL), 另AS400过来的数据集非常之大,如有80万条记录在数据库在显示单表就有60多M 所以,我的构想是这样: 1、对AS400过来的数据集分页,这一点ADO+ODBC可以作到。 2、然后我按每页的将数据装入我的SQL当中,所以要求对OLE DB编程或 对ADO来讲有一个快速的装入方法,不然,我有三十张表的话肯定死定了。而这一步 我是没法做到。(insert方法绝不可行,效率太低,铁定被老板打死了) 3、我记得有个朋友讲解过一个直接对原生ADO写程序的例子效率可提高70%,我 想应差不多了。 4、不知有个叫温柔一刀的能否看见,唉,我还差他400分呐,实在不好意思叫他再来 答我的题了。
各位老大: 小弟再说清楚一点,事情原由是这样的,我从一个数据库产生一个DataSet数据集 我要将这个数据集装进另一个数据库(系统都不同,一个是AS400,另一个是SQL), 另AS400过来的数据集非常之大,如有80万条记录在数据库在显示单表就有60多M 所以,我的构想是这样: 1、对AS400过来的数据集分页,这一点ADO+ODBC可以作到。 2、然后我按每页的将数据装入我的SQL当中,所以要求对OLE DB编程或 对ADO来讲有一个快速的装入方法,不然,我有三十张表的话肯定死定了。而这一步 我是没法做到。(insert方法绝不可行,效率太低,铁定被老板打死了) 3、我记得有个朋友讲解过一个直接对原生ADO写程序的例子效率可提高70%,我 想应差不多了。 4、不知有个叫温柔一刀的能否看见,唉,我还差他400分呐,实在不好意思叫他再来 答我的题了。
T true64 Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-30 #24 转成文本文件,从文本文件再倒到另一个里面。如何? SQL支持么? ORACLE支持,应该比INSERT快
白 白水 Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-31 #25 唉,我曾经做过insert语句,一分钟一百来条数据,让客户骂了半天,真没面子
Z zyzdy Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-31 #28 to:true64 将数据集存在TXT不现实,花的时间太长,我也知道,你的意思是将TXT用 bulk into数据。我不认为这是一个好方法。
L lollman Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-31 #29 想了个笨办法,开两个线程,一个import,一个export 。 分页将数据用BatchMove到临时库,顺序生成bak01.dbf,bak02.dbf..... 生成一个就写入ini文件,通知另一个线程。 同时另一边检测ini文件有没有生成临时库,有就开始.... 呵呵,骗分骗分啦。
想了个笨办法,开两个线程,一个import,一个export 。 分页将数据用BatchMove到临时库,顺序生成bak01.dbf,bak02.dbf..... 生成一个就写入ini文件,通知另一个线程。 同时另一边检测ini文件有没有生成临时库,有就开始.... 呵呵,骗分骗分啦。
X xlwang Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-31 #30 我知道 用 adodataset.next 与 adodataset.recordset.movenext 两者速度相差 20 倍! 如果直接用Insert(value1,value2...) 是 100s 的话,那么: 1: insert into () valuesw1,:w2...) prepared 后 在循环里 对参数赋值 的速度是 20 s 2: 原生的Ado 操作插入是 15-20 s 3: 用Sql 的StoreProcedure 是 15 s 以上是我在实际当中测试的结果,希望对你做这个程序有用!
我知道 用 adodataset.next 与 adodataset.recordset.movenext 两者速度相差 20 倍! 如果直接用Insert(value1,value2...) 是 100s 的话,那么: 1: insert into () valuesw1,:w2...) prepared 后 在循环里 对参数赋值 的速度是 20 s 2: 原生的Ado 操作插入是 15-20 s 3: 用Sql 的StoreProcedure 是 15 s 以上是我在实际当中测试的结果,希望对你做这个程序有用!
A Aloney Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-31 #31 使用SQLDMO这个COM组件编程,它是SQLSERVER自带的,其实Enterprise Manager就是基于 SQLDMO编写的,我查过了,用SQLDMO可以实现和IMPORT/OUTPORT相同的功能,速度很快。 希望能帮你!
使用SQLDMO这个COM组件编程,它是SQLSERVER自带的,其实Enterprise Manager就是基于 SQLDMO编写的,我查过了,用SQLDMO可以实现和IMPORT/OUTPORT相同的功能,速度很快。 希望能帮你!
Z zyzdy Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-31 #32 to:Aloney 非常感谢你的帮助,我也确实找到了这个组件,它是以DLL形式提供的。 里面复杂得很,我一看头都大了那位老兄长有示例。小弟在此谢过。
Z zyzdy Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-31 #33 我真他妈的笨,下面的语句我都实现不了: 那个窗没关我跳下去算了。 var vf,vv:OleVariant; //vf是字段列表,vv是值列表 begin vf:=VarArrayOf(['字段1','字段2']); // 循环 vv:=VarArrayOf([字段1值,字段2值]); adotable1.Recordset.AddNew(vf,vv); // 循环 我照上面的示例写的代码,为何不过。。。。(我用Cbuiler) OleVariant VF,VV; VF=VarArrayof("aa","ab"'); for(int a=0;a<count;a++) { VV=VarArrayof(SQL->Recordset->Fields[0]->AsString,SQL->Recordset->Fields[1]->AsString); AQL->Recordset->AddNew(VF,VV); SQL->Recordset->Next(); }
我真他妈的笨,下面的语句我都实现不了: 那个窗没关我跳下去算了。 var vf,vv:OleVariant; //vf是字段列表,vv是值列表 begin vf:=VarArrayOf(['字段1','字段2']); // 循环 vv:=VarArrayOf([字段1值,字段2值]); adotable1.Recordset.AddNew(vf,vv); // 循环 我照上面的示例写的代码,为何不过。。。。(我用Cbuiler) OleVariant VF,VV; VF=VarArrayof("aa","ab"'); for(int a=0;a<count;a++) { VV=VarArrayof(SQL->Recordset->Fields[0]->AsString,SQL->Recordset->Fields[1]->AsString); AQL->Recordset->AddNew(VF,VV); SQL->Recordset->Next(); }
Q qinghao Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-05 #34 老兄,心急吃不了热豆腐哦。 delphi下:function VarArrayOf(const Values: array of Variant): Variant; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++builder下:VarArrayOf(const Variant * Values, const int Values_Size); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
老兄,心急吃不了热豆腐哦。 delphi下:function VarArrayOf(const Values: array of Variant): Variant; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++builder下:VarArrayOf(const Variant * Values, const int Values_Size); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Z zyzdy Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-06 #35 在此处出错, AQL->Recordset->Open(SU,AC,0,0,0); 该如何用这句话呢? AQL->Recordset->Open(SU,AC,2,2,0); VF.PutElement("AA",0); VF.PutElement("AB",1); for(int a=0;a<count;a++) { VV.PutElement("AA",0); VV.PutElement("19761219",1); AQL->Recordset->AddNew(VF,VV); }
在此处出错, AQL->Recordset->Open(SU,AC,0,0,0); 该如何用这句话呢? AQL->Recordset->Open(SU,AC,2,2,0); VF.PutElement("AA",0); VF.PutElement("AB",1); for(int a=0;a<count;a++) { VV.PutElement("AA",0); VV.PutElement("19761219",1); AQL->Recordset->AddNew(VF,VV); }
温 温柔一刀 Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-06 #36 1.如果你不能真正disable SQL SERVER 的 transction的话, 恰好应该显示调用transction,可以很大提高速度(至少提高几十倍) 2.目标数据库是SQL Server的时候,可以用一次提交多条SQL语句的办法提高速度 3.如果多条SQL语句一次提交,使用原生ADO对象还可以提高速度 这三种办法同时使用的话,应该可行,我在一台极烂的server上测试, 一万条sql语句(不过只有两个字段),用时十几秒钟。。。
1.如果你不能真正disable SQL SERVER 的 transction的话, 恰好应该显示调用transction,可以很大提高速度(至少提高几十倍) 2.目标数据库是SQL Server的时候,可以用一次提交多条SQL语句的办法提高速度 3.如果多条SQL语句一次提交,使用原生ADO对象还可以提高速度 这三种办法同时使用的话,应该可行,我在一台极烂的server上测试, 一万条sql语句(不过只有两个字段),用时十几秒钟。。。
Z zyzdy Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-06 #37 我真的很感谢各位的帮助。我觉得也许我的要求太高了一点,现面状态是这样了 现在表叫A1,其中有20字段,目前记录条数914,883,数据大小79M,其中一条index就有 [acmvpf_batctrcde 13MB],跑在SQL Server7.0上面。 各位的方法比我以前确实快了不少。。有了不少的进步。。。特别是温兄的建议.... 但现实状态不容我乐观:现在一家分公司就有90万条,我们公司现有十多家分公司,且还 在不断的开分公司;那么看来,数据至少应有900万条了样子。就是现在我用microsoft 的Import or Export也得花上快大半小时。。要是全部分公司都上线的话。同步一个 表就要好几个小时,我想我咨询了一下IBM与microsoft公司,他们的建议是我将源数据 处理为TXT文件,然后用microsoft特别处理的大量数据装载过程,效率会很高的,比写 程序的方式快二至三倍的样子,所以,我打算改用这种方式处理了。。 还有,我知道在Delphi中用原生的ADO,很方便,便我在C Builder中花了很多时间也 无法使用源生的ADO,我也动过念头使用adoint&&ole db,直接调用ADO的API不过实在 惭愧,还没能在C Builder中实现Addnew 的操作。。。。不知可有高人愿指点小弟一、二 。。唉,我想我应该去死。。。
我真的很感谢各位的帮助。我觉得也许我的要求太高了一点,现面状态是这样了 现在表叫A1,其中有20字段,目前记录条数914,883,数据大小79M,其中一条index就有 [acmvpf_batctrcde 13MB],跑在SQL Server7.0上面。 各位的方法比我以前确实快了不少。。有了不少的进步。。。特别是温兄的建议.... 但现实状态不容我乐观:现在一家分公司就有90万条,我们公司现有十多家分公司,且还 在不断的开分公司;那么看来,数据至少应有900万条了样子。就是现在我用microsoft 的Import or Export也得花上快大半小时。。要是全部分公司都上线的话。同步一个 表就要好几个小时,我想我咨询了一下IBM与microsoft公司,他们的建议是我将源数据 处理为TXT文件,然后用microsoft特别处理的大量数据装载过程,效率会很高的,比写 程序的方式快二至三倍的样子,所以,我打算改用这种方式处理了。。 还有,我知道在Delphi中用原生的ADO,很方便,便我在C Builder中花了很多时间也 无法使用源生的ADO,我也动过念头使用adoint&&ole db,直接调用ADO的API不过实在 惭愧,还没能在C Builder中实现Addnew 的操作。。。。不知可有高人愿指点小弟一、二 。。唉,我想我应该去死。。。
W whiskers Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-06 #38 相对来说,是不是DB-LIBRARY更快,它提供相对应的bcp函数bcp_readfmt,bcp_writefmt
温 温柔一刀 Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-06 #40 这就奇怪了,这么大的数据量,需要每次实时同步么? 如果天天都要实时同步,那很显然应该改改应用策略了, 比如生成TXT文件的时候,使用多台机器(针对若干分公司)同时生成, 再使用上面所说的办法。。。。 总之不应该什么事情都通过一个程序联机处理。
这就奇怪了,这么大的数据量,需要每次实时同步么? 如果天天都要实时同步,那很显然应该改改应用策略了, 比如生成TXT文件的时候,使用多台机器(针对若干分公司)同时生成, 再使用上面所说的办法。。。。 总之不应该什么事情都通过一个程序联机处理。