[英]Export from Excel to SQL Server with Excel Column of Multiple Values
尽管我有一些SQL技能,但我对数据库设计还是比较陌生的。 我有一个要上传到SQL Server的Excel工作表。 问题是我在Excel中有一列,其中有多个用“ /”分隔的值。
例如:
Fruit Banana/Pear/Orange Pear/Raspberry/... Banana
...
我想基于“ /”拆分单元格,这很好。 然后将值放入SQL Server中的表中。 但是,Excel单元格中没有定义的“水果”数量,因此我需要允许多个表字段。
有人对此有建议吗? 我编写了一个ADODB连接,以便从Excel导出到SQL Server,但是不知道如何处理此单元格。
谢谢
另一种选择是在加载数据后拆分数据。 例如
Declare @YourTable table (ID int,Fruit varchar(150))
Insert into @YourTable values
(1,'Banana/Pear/Orange'),
(2,'Pear/Raspberry/Apple'),
(3,'Banana')
Select A.ID
,B.Key_Value
From @YourTable A
Cross Apply (Select * from [dbo].[udf-Str-Parse](A.Fruit,'/')) B
退货
ID Key_Value
1 Banana
1 Pear
1 Orange
2 Pear
2 Raspberry
2 Apple
3 Banana
UDF
CREATE FUNCTION [dbo].[udf-Str-Parse] (@String varchar(max),@Delimeter varchar(10))
--Usage: Select * from [dbo].[udf-Str-Parse]('Dog,Cat,House,Car',',')
-- Select * from [dbo].[udf-Str-Parse]('John Cappelletti was here',' ')
Returns @ReturnTable Table (Key_PS int IDENTITY(1,1), Key_Value varchar(max))
As
Begin
Declare @XML xml;Set @XML = Cast('<x>' + Replace(@String,@Delimeter,'</x><x>')+'</x>' as XML)
Insert Into @ReturnTable Select ltrim(rtrim(String.value('.', 'varchar(max)'))) FROM @XML.nodes('x') as T(String)
Return
End
设计表时,它必须具有定义的列数。
最简单的方法是为每个组分配一个ID。
ID Fruit
1 Banana
1 Pear
1 Orange
2 Pear
2 Raspberry
3 Banana
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.