C#中的Excel表到SQL表-将Excel中的多列映射到SQL中的单列
本文关键字:SQL Excel 单列 映射 中的 表到 | 更新日期: 2023-09-27 18:00:43
我正在尝试将excel中的单个ListObject表上传到数据库中的SQL表。
我已经编写了简单地生成SQL查询字符串并执行的代码——这很有效,但不容易维护。
所以我发现了这个技巧:https://stackoverflow.com/a/11268550/1610402
这允许我填充一个数据表并将其大容量插入SQL;具有列映射功能(如果需要)。
然而,我在Excel中的表结构不同于简单的列"名称",以避免冗余数据。
因此,我需要从Excel映射列(示例):
Column1 Column2 '2015' '2016' '2017' '2018' '2019' '2020'
1 1 0.1 0.2 0.3 0.35 0.375 0.4
1 2 0.1 0.2 0.3 0.35 0.375 0.4
到SQL中的列,如下所示:
Column1 Column2 Year Value
1 1 2015 0.1
1 1 2016 0.2
1 1 2017 0.3
1 1 2018 0.35
1 1 2019 0.375
1 1 2020 0.4
1 2 2015 0.1
1 2 2016 0.2
1 2 2017 0.3
1 2 2018 0.35
1 2 2019 0.375
1 2 2020 0.4
在C#.Net中有更好的方法吗?还是应该坚持使用嵌套的for循环和字符串生成器?
所需内容的概念称为"取消抓取"。无论你在C#中这样做还是不重要,因为你可以简单地在SQL Server中加载第一个数据,然后通过取消对这些数据的浏览
SELECT IDENTITY(int,1,1) as RowId, Column1, Column2, [Year], [Value]
INTO newTable
FROM (
SELECT Column1,Column2,[2015],[2016],[2017],[2018],[2019],[2020] FROM oldTable
) as source
UNPIVOT
(
[Value] for [Year] in [2015],[2016],[2017],[2018],[2019],[2020]
) as target
需要使用方括号使这些字符串显示为列名,而不是数字或保留字。