簡體   English   中英

使用多個值的Excel列從Excel導出到SQL Server

[英]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

使用橋表 這樣,水果表中的每一行都可以具有N個類型。

在此處輸入圖片說明

表類型中的描述值將為香蕉,梨,橙,樹莓等。

設計表時,它必須具有定義的列數。

最簡單的方法是為每個組分配一個ID。

ID  Fruit
1   Banana
1   Pear
1   Orange
2   Pear
2   Raspberry
3   Banana

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM