以文本方式查看主题 - 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编辑过]
|