用sqlserver处理excel表格

本文分享了一次从Excel表导入数据到SQL数据库的实际经验,包括遇到的问题与解决方案。介绍了两种方法:使用MySQLforExcel插件和直接通过SQL语句处理。详细讲述了每种方案的操作流程及注意事项。

本来最近在研究微信公众平台的,老大临时交我个任务,把excel表格里的数据导入sql数据库,我想这so easy嘛。 没想都在上面消磨了两天...

把情况介绍下:在数据库中有如下这样结构的表(A表)


我只取关键的及列里面还有很多数据。

有一张id和name对照的excel文件(B表)和N张结构类似的excel表(C表)(没有id那一列)

             

我的任务在B表中找到C表中数据对应的id后,然后将id加到C表中,最后根据id是唯一的,用C表的数据去更新A表的数据。这里主要涉及了excel表格和数据库表间的转化

方案一: 用excel+MySQL for Excel处理


是MySQL for Excel 是excel直接操作mysql数据库的一个插件,你可以像修改excel表格一样修改数据库,当然也可以进行表的合并等。 插件的安装,大家百度吧。

在使用这个的时候遇到了个问题,MySQL for Excel 能连接到本地的数据库,但在服务器上的数据库总是连接不上。。。。方案一破产

方案二: 把excel表直接导入数据库,用sql语句进行操作。这里要注意两点 一是excel表格中的手机号码要设置为文本格式 ,二是统一用繁体字 。出现空格乱码时,删除空格重写输入。




### 将Excel文件中的数据导入到SQL Server数据库的方法 要将Excel文件中的数据成功导入到SQL Server数据库中,可以采用多种方法。以下是几种常见的实现方式: #### 方法一:使用Kettle工具 Kettle是一款强大的ETL(Extract, Transform, Load)工具,能够轻松完成从Excel到SQL Server的数据迁移任务。 1. **创建转换流程** 使用Kettle的图形化界面设计一个转换流程,指定输入源为Excel文件,目标为SQL Server数据库。 2. **配置Excel输入步骤** 在Kettle中添加“Microsoft Excel Input”组件,并设置Excel文件路径以及工作表名称或范围[^1]。 3. **连接SQL Server数据库** 添加“Table Output”组件并配置SQL Server的目标表结构。确保目标表字段类型与Excel列匹配,尤其是对于长度较长的字符串字段,需调整为目标表的`nvarchar(max)`或其他适合类型的定义。 4. **运行转换** 执行该转换后,Kettle会自动处理数据映射并将记录写入SQL Server数据库。 #### 方法二:通过SSIS (SQL Server Integration Services) 这是微软官方推荐的方式之一,适用于更复杂的场景。 1. 创建一个新的Integration Service项目,在Visual Studio环境中打开它。 2. 配置Data Flow Task内的Source Component指向本地存储的Excel文档位置及其格式说明;Destination Component则关联至已存在的SQL Server实例上的特定Schema下的对象名列表里去。 3. 调整Advanced Editor选项卡下各阶段参数设定来满足实际需求比如字符集编码等问题可能引起失败情况发生前预防措施等等细节部分都需要仔细斟酌考虑清楚再做决定才行哦! #### 方法三:利用BULK INSERT语句 这是一种简单直接的技术手段,特别当面对大量静态历史档案资料需要一次性加载进来的时候尤为适用。 ```sql BULK INSERT YourDatabase.dbo.YourTargetTable FROM 'C:\Path\To\YourFile.csv' WITH ( FIELDTERMINATOR = ',', -- 如果是CSV分隔符可能是逗号或者其他符号 ROWTERMINATOR = '\n', FIRSTROW=2 -- 假设首行为标题行跳过不读取只保留真实业务逻辑相关数值型纯数位串而已啦! ); ``` 注意这里假设原始Excel已经被另存为什么样的平面文本形式即所谓的`.csv`扩展名为佳选方案之一咯。 另外还需留意的是关于超长字段问题解决方案建议预先修改对应接收端表定义允许更大容量空间预留出来避免截断异常现象再次重现影响整体操作流畅度体验效果最佳实践分享完毕谢谢大家支持鼓励哈😊! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值