excel导入mysql后会多了0_Excel导入MySQL数据出现

excel导入mysql后会多了0_Excel导入MySQL数据出现点击 import 则数据导入表格成功 结果如下所示导入的 MySQL 数据错列问题 当导入 fct sales item 的时候发现 数据存在一个错列有问题 也就是对比 MySQL 数据库原表的列的顺序 会发现该表的表头与数据库中原表的字段列不一样 当导入数据时候 excel 会对原表头进行重新排序 本案例中 导入的数据表头是按字段名称的英文字母的升序顺序 而不是按原来数据表中的字段顺序 这会导致当导入的数据出

点击import:则数据导入表格成功,结果如下所示

505a78549774708677ee9ec1d56907fa.png

导入的MySQL数据错列问题:

当导入fct_sales_item的时候发现,数据存在一个错列有问题。也就是对比MySQL数据库原表的列的顺序,会发现该表的表头与数据库中原表的字段列不一样。

1150b5b0785a15ac8f6c2d05471397fe.png

当导入数据时候,excel会对原表头进行重新排序。

本案例中:导入的数据表头是按字段名称的英文字母的升序顺序。而不是按原来数据表中的字段顺序。这会导致当导入的数据出现格式错误无法导入。

当导入另一个表fct_sales:

系统会报一个错误,把salesno这列数据当作了dimdateid,所以报格式错误。

c4d64569116ccbc459890b6f4267e123.png

导入到excel的字段顺序按表头名称进行了重新排序,所以会造成把原列中的salesno在导出到excel数据的新列中当作为dimdateID,从而导致原来salesno中的数据内容为字符与dimdateID格式中的日期时间型冲突。

09d4bae71fb533f37ecac8ccd33669c3.png

如何解决数据错列的问题:

从这个问题来看,应该是excel for mysql这个插件的一个严重的BUG。解决问题是对导入的数据的列名进行相应的重新命名,保证表头的字段顺序是期望的顺序。在导出的数据前临时生成一个临时表,以顺序的字母开始取原字段取个别名。以导出fct_sales的数据为案例。

首先,重新在数据库中创建一个表,给相应顺序的字段重新命名,在前面增加一个字母顺序的别名(也可以使用像字母加上字母顺序的写法,例如:t1,t2,t3,…….。

create table temp_fct_sales

as

select ID as a_id

,salesNo as b_sales_no

,dimdateID as c_dimdateID

,dimShopID as d_dimShopID

,dimMemberID as f_dimMemberID

,QTY as g_qty

,AMT as h_amt

from fct_sales;

如下图所示:

418c6be484f011fc00c464a4805cb0aa.png

这个时间导出表为:temp_fct_sales

点击导出数据到excel

aa374b811e3942e221c9e9db4c9e6748.png

则数据可以正确导出到excel中

08b9a17f062de8d9ff701fcabc9ff26c.png

数据从excel中导入到MySQL中:

假设excel表中有以下数据要导入到数据库中

19e27da8236536b6c34fa245a8ad9b55.png

数据导入的操作顺序如下:

第一步:创建数据表。在数据库中新建一个用于接收导入数据表的。在创建表以后,当导入数据的时候。Excel for mysql插件也会根据表字段名对字段进行重新排序。所以也会存在导入数据的列与定义表的列字段错行,所以为了保持二者一致,也创建在创建表的时候按导入数据列的顺序加个“带有顺序的前缀”。

如下所示:

create table temp_order (a_order_id varchar(30)

,b_merchant_id int

,c_member_id int

,d_create_time datetime

,f_sale_amt float(8,3)

,f_sale_qty float(8,3)

,f_sale_promo float(8,3));

创建成功后,excel 连接中使用刷新一下,可以看到新增加的表:

b0f25ae89fdd124ca4b643a05c6c421f.png

第二步:选中要导入excel的数据。对要导入的数据一定要进行全选。

第三步:选中要导入的表。然后选中要把数据导入到对应的数据库的表。这个时间看到append excel data to table 把excel数据导入到数据表中的选项是可见的,不是灰色了。

832382977487d21a4d0d2f21192e0cce.png

第四步:导入数据

点击导入excel数据到数据表的选项,出现如下的界面。

f49c55f4ae34c5a793a957c53d0ffa44.png

把first row contains column names:这个选项先上,系统会自动进行一对一匹配。下面表的列的顺序是按之前创建表的字段顺序【这个顺序在创建表的时候根据excel的列是对应创建的】。如果首行不是字段名,就可以不用勾选,默认是没有勾选上的。

END.

本文整理自爱数据学院中的问答

更多精彩问答,进入下方社区网站查看

http://www.lovedata.cn/invitation

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225734.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午8:39
下一篇 2026年3月17日 上午8:39


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号