vlambda博客
学习文章列表

【MySql】数据导入错位的问题

上次在导入交易数据的时候,因为分隔符和字段本身含有的字符是一样了,所以出现了导入完成的数据错位的问题。

本来想忽略不管,后面发现这少量的样本会影响整体的情况。后面想了下还是重新整理一下这些数据吧。不重要的字段就留空算了。

-- 创建新表接收错位的数据create table t_3_e as select * from transaction_detail_202203 where 外部商户名称 is null;-- 将其它数据整理到另一个表create table trans_detail_202203_c asselect * from transaction_detail_202203 where 外部商户名称 is not null;
-- 查询目标表的字段select GROUP_CONCAT('`',column_name,'`') from information_schema.columns where table_schema='alliance' and table_name='t_3_e';-- 新建一个空表,用于接收调整后的数据create table t_3_e_c like t_3_e;-- 将错位的字段纠正后导入目标表中insert into t_3_e_c(`alliance_no`,`订单编号`,`外部交易订单号`,`机具种类`,`公司编号`,`所属者用户编号`,`机具所属者姓名`,`机具所属者邀请码`,`外部商户号`,`外部商户名称`,`交易类型`,`交易金额`,`分润扣除项`,`交易时间`,`机具SN号`,`结算方式 0-T0 1-T1,2-D1,3-D0`,`交易卡种 1-贷记卡,2-借记卡`,`交易费率`,`交易手续费`,`参与的手续费活动,多个以,分开,free-免手续费活动`,`交易分润金额`,`结算分润金额`,`联创交易分润`,`联创结算分润`,`所属联创用户`,`所属机构编号`,`所属机构名称`,`机构所属销售`)select `alliance_no`,`订单编号`,`外部交易订单号`,`机具种类`,`公司编号`,`所属者用户编号`,`机具所属者姓名`,`机具所属者邀请码`,`外部商户号`,`交易类型`,`交易金额`,`分润扣除项`,`交易时间`,`机具SN号`,`结算方式 0-T0 1-T1,2-D1,3-D0`,`交易卡种 1-贷记卡,2-借记卡`,`交易费率`,`交易手续费`,`参与的手续费活动,多个以,分开,free-免手续费活动`,`交易分润金额`,`结算分润金额`,`联创交易分润`,`联创结算分润`,`所属联创用户`,`所属机构编号`,`所属机构名称`,`机构所属销售`,null from t_3_e;-- 将修正后的数据汇总insert into trans_detail_202203_cselect * from t_3_e_c ;-- 将有错位数据的总表删掉drop table transaction_detail_202203;-- 将修正后饿总表的数据汇总如总的交易表中insert into transaction_detailselect `alliance_no`,`订单编号`,`外部交易订单号`,`机具种类`,`公司编号`,`所属者用户编号`,`机具所属者姓名`,`机具所属者邀请码`,`外部商户号`,`外部商户名称`,`交易类型`,`交易金额`,`分润扣除项`,`交易时间`,`机具SN号`,`结算方式 0-T0 1-T1,2-D1,3-D0`,`交易卡种 1-贷记卡,2-借记卡`,`交易费率`,`交易手续费`,`参与的手续费活动,多个以,分开,free-免手续费活动`,`交易分润金额`,`结算分润金额`,`联创交易分润`,`联创结算分润`,`所属联创用户`,`所属机构编号`,`所属机构名称`,`机构所属销售`,null from transaction_detail_202203;

现在发现information_schema这个库是个宝藏,有很多我们意想不到的意外惊喜。