以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]mysql做数据库,把数据load下来  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=169037)

--  作者:chnfo
--  发布时间:2021/5/30 22:11:00
--  [求助]mysql做数据库,把数据load下来
之前官方回复是不直接支持mysql,这就直接导致要把一些比较稳定的、但数据量比较大的表数据整到本地,会很麻烦,因为不支持象load的方法

比如一个表A的数据有5W行。
按新版本的说法,是fill方法重写之后,效率大大提升(我还没有实测),那是不是就表示可以用mysql从后台查询出一个临时表X(包括了表A的所有字段,但临时表只检索出符合条件的数据),再用fill的方法与临时表X的数据整到表A中去?

如果这样是可行的,要怎么用呢?(从mysql中把符合条件的数据找出来,这个我知道)

--  作者:有点蓝
--  发布时间:2021/5/30 22:21:00
--  
从mysql中把符合条件的数据找出来,直接绑定到窗口表即可

tables(“窗口表”).DataSource = mysql组件查询的system.data.datatable

--  作者:chnfo
--  发布时间:2021/6/1 17:19:00
--  
我是要把稳定数据load到了本地,重复引用。只是查出数据放到窗口表,就不问了
--  作者:有点蓝
--  发布时间:2021/6/1 17:29:00
--  
这种只能使用.net的数据表system.data.datatable,不能使用Foxtable的datatable。

到全局变量里定义即可

public dt as system.data.datatable

需要的时候加载数据
dt = mysql组件查询的system.data.datatable

--  作者:chnfo
--  发布时间:2021/6/1 20:34:00
--  
有无方法把dt的数据copy到表A中?逐行复制就算了,3万行逐行复制太慢
--  作者:有点蓝
--  发布时间:2021/6/1 20:38:00
--  
https://docs.microsoft.com/zh-cn/dotnet/api/system.data.datatable?view=net-5.0#methods

试试Merge方法

--  作者:chen37280600
--  发布时间:2021/6/1 21:28:00
--  
思路1:
第一步:把mysql数据加载到本地的临时DataTable
第二步:用SqlBulkCopy,把临时数据批量插入到Mssql的数据库

思路2:
使用专业的数据搬运工具,行业名词叫ETL工具
例如阿里巴巴出的DataX
把数据从MySql搬运到Mssql,平均1.5w条1秒
到了Mssql,你想怎么折腾都可以

[此贴子已经被作者于2021/6/1 21:35:09编辑过]

--  作者:chnfo
--  发布时间:2021/6/2 14:08:00
--  
思路一的第一步没有问题。第二步就有偏差了,如果已经用了masql,就没第一步了。前提:只用mysql数据库。要解决的问题:将查询出来的数据copy到表A中
--  作者:chen37280600
--  发布时间:2021/6/2 15:01:00
--  
你要copy到的表A,表A在那里?是在mysql里的表A?还是Mssql的表A?还是内部表的表A?

①mysql的表A,请直接用mysql语句表对表拷贝
②mssql的表A,可以用DataX拷贝,也可以SqlBulkCopy批量插入
③内部表的表A,这个本身就是弱鸡性能的表,就没任何批量方法,管你从什么地方来
[此贴子已经被作者于2021/6/2 15:02:21编辑过]

--  作者:chnfo
--  发布时间:2021/6/2 15:29:00
--  
1、最开始使用的access做数据库,但因为access本身的性能、广域网应用方面的问题,准备换数据库
2、有两个选项,一是mssql,二是mysql,mysql免费但官方不直接支持,所以现在在尝试mysql
3、准备使用客户端+数据库的方式
4、有一个数据表X,它的信息稳定较少变化,但数据行很多(现在是10W行级别的),而且有很多表会引用到它,在它的基础上应用一些表达式列来解决业务问题
5、现在使用mysql的问题:用sql查询出来的表只能加载到窗口中,一是每次都要查询大量数据性能可能会有问题,二是既然很多业务要用到它,就表示不同的窗口表要增加临时列,还要设表达式,远不如用视图来得方便。

6、所以我就想把mysql的表X的数据一次性加载到客户端上,以后不管哪个业务引用到它,就不用到后台数据库中取了。
但狐表没有mysql的load方法。

所以,所想的是将外部表X形成一个查询表DT,然后把DT的数据复制到客户端的表X(它本身映射的就是外部表X)中。
[此贴子已经被作者于2021/6/2 15:31:43编辑过]