当前位置:文档之家› 导入数据高级教程

导入数据高级教程

导入数据高级教程文/叶竹其目录一、导入数据来源1.从软件导出数据2.从数据库表导出二、高级处理技巧1.筛选列的不重复值2.内容编码查询替换四、常用辅助工具1.EXCEL/记事本2.思迅新通用导入工具3.思迅基本资料导入工具4.文本处理工具集一、导入数据来源既然是导入,是将数据从一个地方导入到另一个地方,从一种格式转换成另一种格式,原始数据就有一个来源问题。

新上线系统,数据可能来源于大量EXCEL表格,需要进行合并统一处理;切换上线系统,数据一般来源于旧系统。

从旧系统中提取原始数据,又有两种方式,一种是根据原有软件的报表、打印、导出等功能将查询的相应数据导出成中间格式(一般用EXCEL),还有就是直接查询导出原软件的数据库表的数据。

1、从软件导出数据:此方式特点是查询容易,数据直观,可以先进行数据的条件筛选、排序、列选择,确定好具体数据内容格式、数据范围后再导出,操作也比较便利。

缺点就是有些软件部分资料没有提供导出功能(我见过几款软件的品类资料是没法直接导出的)、所见的资料项是最终数据内容而我们可能需要数据内容的编码(比如商品资料中的品类、供应商),使用这里导出的数据就需要对这些资料项进行编码替换[参见二(2)节]。

2、从数据库表导出:此方式特点是可以取得完全原始数据,但需要手工再进行过滤、处理,可能会碰到几个小问题:一个是表定位,我们可能无法事先知道相应数据存储的表,除了手工一张张翻(本人以前还真这么干过),用SQL的事件探查器可以比较方便地分析出相应数据存储的表,打开事件探查器后,操作查询相应数据,再稍作分析即得可知。

一个是字段字位,原始数据库表自然有很多字段,需要用到的实际数据项使用哪些字段又要分析了,除了字段名(一般用英文关键字、拼音首字母),我们可以根据字段数据的内容定位出数据项,特别是通过对比某项数据不同的两行,或者对某个数据项更改前后的结果进行对比,确定出具体数据项使用的字段。

综上,一次数据导出导入处理是使用哪种方式,是要看数据具体情况分析决定,通常都会两种方式结合使用,以保证数据完整性、准确性和处理效率。

二、高级处理技巧1.筛选列的不重复值不同软件的功能架构及数据库结构不一样,因此对数据的存储方式也不一样,不同系统中转换可能需要进行部分数据的表对应关系处理。

比如:某软件的品牌资料是作为商品的资料项直接存储在商品资料表中,某软件的价格信息不存储在商品资料表中,是另以货号索引在一张独立的表中。

相应即为两种情况:原始数据没有我们需要的单独表,需要从数据项中提取建立。

原始数据项分布在单独一张表中,需要我们合并作为一张表的数据项。

对于没有单独数据表的,一般提取所有资料项并去重处理(即提取不重复资料项)并给予编码及建立一张表,将该项资料在新表的编码填充进原资料表中的相应资料项。

筛选列的不重复值,这个相信很多朋友都知道,通过EXCEL的“筛选”功能就可以实现,点击筛选按钮旁的“高级”,列表区域为选定的列,勾选“选择不重复的记录”,确定后,该列数据项有重复的将只显示一行,此时可将此列复制得到不重复的数据项。

EXCEL 2003好像是不支持此功能,或者实现方式比较烦琐,我多年前曾用VB写过一个小工具也可以作此处理:2.内容编码查询替换对于导入数据是从软件导出的,数据项通常为最终呈现的内容数据,或者原始数据就是直接以数据内容存储的情况,我们可能需要的是数据编码,就需要对这部分内容与编码的对应进行处理。

资料项是具体数据,需要转换成另一个资料表的对应编码,这个在数据不多的时候可以用手工替换处理,有几种数据就替换几次,直至全部替换完成。

数据量大的时候这么处理就不现实了,这个情况EXCEL应该也处理不了,但可以用SQL简单处理。

方法是将资料项作一个EXCEL或TXT单独导入一张临时表,用查询语句去来源数据表查询得到对应数据项并保存在同张表的另一列,再将查询结果列复制或表导出,替换资料表的内容列(或新增一列),完成内容与编码的对应转换。

举个例子,导入临时表名t_temp,字段cls(分类名称),cls_no(准备获取的分类编码);分类数据表t_bd_item_cls,字段item_clsno(分类编码),item_clsname(分类名称)。

那么,将来源表格中的分类列内容导入到临时表t_temp,查询语句为:Update t_temp set cls_no=(select top 1 item_clsno from t_bd_item_info whereitem_clsname=cls)(如果两张表有字段名称相同,可以用”表名.字段”表示)此语句是一个嵌套查询,对该表所有行处理,写入字段cls_no(准备获得的分类编码),值为根据该行的cls字段(分类名称)去t_bd_item_info表查询与clsname(分类名称)字段数据相等的同一行的clsclsno(分类编码)字段。

理解不了语句的,中文这么解释估计也难理解,这是个逻辑问题。

有用过这方式取过数据的人可能会发现这么操作有个问题,就是从原始来源EXCEL表复制了这一列导入之后,或者是查询生成了对应新列数据后,查询或导出时该表的数据排序变了,不是原始导入的数据行顺序,这样就完成不了对应的数据与编码的对应替换,这怎么办呢?因为SQL的排序是根据列的一定规则进行的,导入后按默认排序规则造成排序变动,解决办法也很简单,我们多导入一列用于排序,导入前按行顺序生成个数字序列作第一列,一并导入,即可解决此问。

EXCEL复制列值到TXT,(TXT导入SQL),SQL查询编码,编码列复制到EXCEL表格的相关截图:实践中,还可能存在一个问题。

原始列内容中存在重复项目,那么根据我们的查询语句,它将查出第一个出现的该内容对应的编码,造成与实际数据的偏差。

而我们在原始资料EXCEL 表中,仅从数据内容看不出其实际应取的编码。

这种情况怎么处理呢?有三种方式供参考:A、先对重复的数据项进行去重处理,在原来软件中稍加改变重复项目的内容(列名后加个数字等),再重新导出后,不再重复后即可得到根据内容准确取到唯一对应编码。

B、放弃使用软件导出方式,因为该列数据存在重复,导出后无法区分原始取值。

改用从数据库表导出数据再作处理。

C、因为数据行范围可能不一样,我们可能需要软件导出的结果集,但因为无法根据列内容取得实际对应的编码,但其实可以根据数据的其他条件去查询,比如根据货号查询得到分类编码,再替换进处理表格。

这个方式有一定前提,就是这个查询条件也要具体唯一性,不存在重复行(一般使用货号或条码)。

举个例子,准备及导入临时表t_temp,字段id,item_no(货号),clsname(分类名-可不需要),clsno(准备获取的分类编码);商品资料表t_bd_item_info,字段item_no(货号),item_clsno(所属分类编码)。

那么,取得分类对应编码的语句为:Update t_temp set clsno=(select top 1 item_clsno from t_bd_item_info wheret_bd_item_info.item_no=t_temp.item_no)这样就近乎完美完成了资料项从内容到编码的对应替换。

上述方法同样适用于,当一个列表需要从一个大结果数据集(表)中对比/查询对应列数据的方法。

这个好像是可以用EXCEL完成,但我没以前没整明白,因为操作太繁琐而逻辑其实是简单清晰的话我希望有个简便的方式处理,所以我曾也写过个小工具可以处理这样文本对比或查询对比输出:四、常用辅助工具1、EXCEL/记事本大名鼎鼎的EXCEL就不用多说了吧,自己尝试和发现吧。

这里举个小应用:列值前补0。

EXCEL表格默认单元格格式下,有0开关的数值开头0部分默认被自动清除,这个在用EXCEL处理数据时不经意间就会造成数据变化问题。

将单元格格式设置为文本可以解决此问题。

对于已经丢失0或者需要补0的数据,可以用以下办法解决:1、原值列A,新插入一列B,用&连接符设置B1的内容=”0” & A1,2.在B1的内容填充入你补的0或其他字符,再插入一列C,为处理后的内容,设置C1的内容=B1 & A1,再往下整列填充公式即可。

如果是像品类编号数据要根据位数决定是否补零的,奇位数补0,偶数位不补,可以直接用公式搞定,A1为原编码,B1内容(格式仍为常规时公式才有效)为=if(mod(len(A1),2)=1),”0” & A1,A1)这个公式用了三个函数:取字符串长度:len(字符串)取模(取余数):mod(操作数,除数)条件判断:if(判断条件,条件成立(true)时的值,条件不成立(false)时的值)另外,关于身份证号的处理,按数值默认会被处理成科学记数法,处理完后再设置文本会发生数据丢失,根据科学记数法恢复数值时丢失后几位。

所以一般要从原始数据取值。

记事本处理单列数据更方便好用,可以将EXCEL表格中的列复制直接粘贴到记事本中,多列时列间会用TAB符分隔,此类文本文件也可以用于软件单据的货号导入或从手持设备导入(货号+数量)。

记事本中常用替换和定位功能:替换:快捷键CTRL+H,记事本不支持*、?通配符,要替换TAB符时可将内容中TAB复制到查找内容输入框。

定位:快捷键CTRL+G,定位到指定行,在自动换行关闭的情况下才有效。

2、思迅新通用导入工具此工具是思迅官方的通用数据导入工具,但我把它列在这边,是因为本人强烈不推荐使用该工具。

该工具经本人使用发现有以下弊端:A、此工具默认导入方式为覆盖导入,存在误操作引起数据丢失严重后果的风险。

此默认值没有必要且高风险。

B、此工具导入时不会检查处理导入货号(条码)与原有货号的辅助条码的重复,可能造成导入条码与原有辅助条码重复的异常结果。

C、此工具导入时不会检查处理导入货号(条码)中的特殊符号,在原始资料有异常字符时可能造成货号异常,你也知道,当货号有业务发生后,要改变它是很难的。

D、此工具导入后不会自动生成商品简称、助记码。

需要通过软件手动生成,如果碰到前台刷商品及小票没品名,你大概就知道原因了。

E、此工具在非服务器使用时,需要每次手动输入数据库名进行连接。

而且SQL兼容性差,常有操作系统连接不上(软件能正常连接)。

以上问题本人均已提交过建议优化,但遗憾均没有被接受,思迅回复本工具定位于初始导入数据使用,不建议多次导入使用。

我只能说很无语,反正我是决定不再使用该工具了。

当然这么说是因为我找到了更好的替代工具,就是下面的:3、思迅软件基本档案导入工具本工具由辞工(QQ 564507807)开发,它的方便性,谁用谁知道,至少没有上述思迅新通用转换工具存在的问题,辞工也是软件实施出身,从客户实践、应用需求的角度开发出的工具,使用体验就是不一样。

相关主题