设为首页 收藏本站
查看: 489|回复: 0

[经验分享] 如何把EXCEL数据导入到SQL SERVER数据库中

[复制链接]

尚未签到

发表于 2016-11-8 09:45:06 | 显示全部楼层 |阅读模式
  在我们完成一个项目开发之后,通常我们需要把客户的很多数据导入到数据库中,面对大量的数据导入工作,人工导入肯定是不现实,但是这些又是不得不完成的工作,怎么办呢?我们可以利用数据库管理工具提供的数据导入的功能即可。我们这里以SQL SERVE2008为例。SQLSERVER2008有一个“数据导入导出功能”,当然我们也可以打开数据库之后,在数据库上点击右键,然后选择“任务”,选择“导入数据”,我们就看到弹出淡入数据的对话框:
   DSC0000.jpg

  这里我们主要导入数据的源格式是EXCEL的,在excel文件中,我们通常需要整理成数据表格的形式,excel中的数据不要出现合并的单元格等,必须是和数据库表对应的一条条记录的形式。在上图中我们先选择数据源为excel,然后再选择excel文件的路径,在最下面有一个“首行包含列名称”的复选项,默认是选中的,也就是说在导入数据的时候会把excel的第一行当做数据库表的列名称,根据需要进行选择。然后选择下一步:
   DSC0001.jpg

  上图中我们主要完成选择目的数据库,按照需要选择即可。然后我们直接点击下一步,指导出现下面的画面:
   DSC0002.jpg

  这就会打开excel文件的工作薄,我们选择一个工作簿(sheet),如果我们的excel中的数据列和数据库表中的列不是对应,则需要进行调整,上图中先选中一个“源”,然后再选择这个源对应的“目标”,此时按钮“编辑映射”处于可用状态,我们点击这个按钮,出现下图:
   DSC0003.jpg
  
  

  在上图中有“删除目标表中的行”和“向目标表中追加行”的单选选项,他们的意思说的很明白,不解释(哈哈).在虾米那的表格中,我们重点关注的是“源”和“目标”列,源指的是excel中的列,这一列通常是不能选择的,我们主要选择的是“目标”列,在这一列就是完成excel的一列行数据库表中的某一个字段进行对应。按照我们的需要进行对应之后,点击确定,下一步等等,直接到最后一步,中间出现的警告都不用去理会,完成之后,可能出现错误提示,这个提示不是很准确的,有时候虽然出错但是数据仍然导入到数据库了,因此我们查看一下数据库是否导入进去,如果没有导入进去,我们看看错误提示,有可能出现的错误时字段不对应,还有外键关系等等,相应的修改一下即可。

  其实上面导入数据个过程尤其是在最后选择“源”和“目标”对应的时候,经常会出现字段的类型不一致的问题,从而导致数据导入不进去,我们可以先把数据直接导入数据库中,生产一个新的数据表,然后在数据库的控制台,利用insert 语句完成数据的导入。
  有时候用户的需求发生变化,数据库表的字段增加了,此时数据量有又大的情况下,我们也不会手动输入数据的,直接导入数据的可能改变我们数据库原有的数据,尤其是数据库表存在主键字段(通常都有的),这个字段还是自增的,同时这个主键字段还是其他表的外键字段,那么直接导入就会造成外键字段的值也要进行对应的修改,总的来说就是工作量很大,很复杂。我们怎么能够在不破坏原有的数据情况下,同时又给新增加的字段导入数据呢?
  我们先对应的数据库表导出为excel文件。在控制台输入“select * from ####”,然后在输出部分,点击右键选择将“标题和数据一块复制”,然后选择另存为,存储为“*.csv”格式的,再用excel打开。 DSC0004.jpg
  打开excel之后,给excel表添加相应的字段,保存之后,重新导入到数据库中,但是此时我们导入数据库时目标数据库表的选择不是已经存在的数据库,我们这里不选择,按照默认的设置即可。一路“下一步”就完成导入工作,在数据库中我们将会发现一个自动生成的表,“sheet1”等类似的名称。
  然后在控制台利用update语句完成数据的导入或更新:
  

  update A set x1=B.x1,x2=B.x2 from A,B where A.id=B.id
  

  在实际的项目中,我们根据需要进行选择,最重要的工作还是在excel中数据的整理,我们可以利用excel提供的各种快捷方法整理,避免我们手工进行大量重复复杂的工作。
  (结束)
  

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-297283-1-1.html 上篇帖子: SQL Server数据库自动处理外键关系的存储过程 下篇帖子: SQL 基本语法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表