当前位置: 首页 > news >正文

Excel批量导入到数据库的方法

这两天在处理Excel批量导入到数据库,用了两种不同的方法:

1、把要导入的数据拼接成字符串,值用特殊字符分割

把上面的单元格复制到Vs ,用Alt键组合添加分割符,组成一行

光标移到尾,删除换行,删除空格和首字符,组成需要的字符串

DECLARE @StrWithPipe NVARCHAR(MAX) = N'C370225A0070|C370225A0070|C370225A0070|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370225A0035|C370225A0035|C370225A0035'

在网络上找了方法,改一下代码,直接使用

-- 创建自定义函数:按|拆分字符串,返回包含每个值的表
CREATE FUNCTION dbo.fn_SplitByPipe (@InputStr NVARCHAR(MAX) -- 待拆分的字符串
)RETURNS @SplitResult TABLE (SplitValue NVARCHAR(MAX)) -- 返回结果表(每行一个值)
AS
BEGIN-- 处理空字符串或NULL的情况IF @InputStr IS NULL OR LEN(@InputStr) = 0RETURN;-- 将字符串转换为XML格式(用|分隔符替换为XML节点)DECLARE @Xml XML = N'<root><item>' + REPLACE(@InputStr, N'|', N'</item><item>') + -- 用</item><item>替换|N'</item></root>';-- 解析XML,提取所有<item>节点的值(即拆分后的每个元素)INSERT INTO @SplitResult (SplitValue)SELECT T.c.value('.', 'NVARCHAR(MAX)') AS SplitValue -- 提取节点文本值FROM @Xml.nodes('/root/item') T(c) -- 定位到所有item节点WHERE T.c.value('.', 'NVARCHAR(MAX)') <> ''; -- 过滤空值(避免首尾|或连续|导致的空元素)RETURN;
END;
GOdeclare @id int =124;-- 1. 定义字符串变量(若已定义可忽略)
--化料入库DECLARE @StrWithPipe NVARCHAR(MAX) = N'C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035';
--蓝皮领料
--DECLARE @StrWithPipe NVARCHAR(MAX) = N'C370225A0070|C370225A0070|C370225A0070|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370225A0035|C370225A0035|C370225A0035'--水场化料领料
--DECLARE @StrWithPipe NVARCHAR(MAX) = N'C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370225A0070|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370224A0036|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035|C370225A0035'--涂饰化料领料
DECLARE @StrWithPipe NVARCHAR(MAX) = N'2025-08-13|2025-08-13|2025-08-13|2025-08-14|2025-08-14|2025-08-14|2025-08-15|2025-08-15|2025-08-15|2025-08-16|2025-08-16|2025-08-16|2025-08-01|2025-08-01|2025-08-01|2025-08-01|2025-08-01|2025-08-01|2025-08-01|2025-08-01|2025-08-01|2025-08-01|2025-08-01|2025-08-01'-- 2. 声明变量:存储遍历的当前值、游标
DECLARE @CurrentValue NVARCHAR(MAX); -- 存储每次遍历取出的值
DECLARE MyCursor CURSOR FOR -- 声明游标,指向拆分后的结果表SELECT SplitValue FROM dbo.fn_SplitByPipe(@StrWithPipe); -- 调用自定义函数拆分字符串-- 3. 打开游标
OPEN MyCursor;-- 4. 从游标中取第一条值
FETCH NEXT FROM MyCursor INTO @CurrentValue;-- 5. 循环遍历:只要能取到值(@@FETCH_STATUS=0表示成功),就继续执行
WHILE @@FETCH_STATUS = 0
BEGIN-- 处理当前值(此处示例为打印,实际可替换为业务逻辑:插入表、更新数据等)--FPdOrderNo  FBillNoPRINT '当前取出的值:' + @CurrentValue;update t_ProductMaterialInOut  set FDate=@CurrentValue where id=@id and FormId='涂饰化料领料'set @id=@id+1;--insert into t_MaterialInOutDetailed (FormId) values ('涂饰化料领料');-- 取下一条值,继续循环FETCH NEXT FROM MyCursor INTO @CurrentValue;
END;-- 6. 关闭并释放游标(必须执行,否则占用资源)
CLOSE MyCursor;
DEALLOCATE MyCursor;


2、第二种方式,在Excel表格中使用语句,生成所需要的语句 
=CONCAT("insert into table values('",C2,"','",D2,"')")

语句上可以修改成和数据库一致的语句,复制所有语句去执行就可以了

http://www.dtcms.com/a/415503.html

相关文章:

  • 开发网站定制珠海柏泰教育官方网站建设
  • 出版物级标记语言解析
  • 集合划分:用元素交换法破解等和难题
  • 培训建设网站深圳建站公司
  • 网站规划与建设规划书wordpress个性时光轴主题
  • 个人网站备案幕布网易梦幻西游手游官方网站下载
  • 数据集 - Al-Maktabah-Al-Shamilah (伊斯兰典籍全集)
  • uC/OS-III 队列(Queue)操作
  • 速度即排名:90分以下=谷歌流量流失?
  • 企业网站空间选择什么网站可以找人做设计
  • 网站建设如何快速增加用户中山企业网站建设公司
  • 工业4.0下的边缘存储设计:数据就地处理,响应更快更安全
  • 做情诗网站私有云 搭建wordpress
  • 上海定制app开发公司杭州seo关键词优化公司
  • Photoshop - Photoshop 根据需要以最佳格式保存照片
  • 11-Redis 集合类型深度指南:从去重特性到集合运算场景落地
  • 【Redis】超级超市的仓库管理系统
  • 个人网站建设模板视频链接生成器在线
  • 网站建设 推广薪资公司网站开发工具
  • 深圳seo网站推广报价电器网站建设策划书
  • 做360网站优化快wordpress5.1下载
  • 深度学习复现:CIFAR-10 数据集任务的实现(测试集)
  • 【Spring 1】Spring IoC:颠覆传统编程的控制反转艺术
  • 如何为网站做面包屑导航网站必须要备案吗
  • AI 动画视频创作:技巧升级与行业未来趋势
  • 数字化转型:概念性名词浅谈(第五十三讲)
  • 制作网站参考案例wordpress推介联盟
  • 当遇到人生低谷期,该怎么度过?别装坚强,熬过去才是真本事
  • 电商网站开发报价单濮阳网站建设陈帅
  • 医联媒体网站建设网站建设网站制作公司