2010-03-01 61 views
0

我有一個巨大的excel數以千計的行,我需要生成一個sql查詢插入數據到sql server數據庫。Excel:從龐大的Excel生成SQL查詢

了Excel的格式如下

1 | string1 | another string 
    string2 
    string3 
2 | AAA AAA | ZZZZZZZ 
    BB BBBB 
    CCCC CC 

的第一列是一個行計數器,它並不重要。 第二列是一組由斷裂線分隔的字符串 第三列是必須被關聯到每個串的上柱串2.

所以我需要生成以下查詢:

INSERT INTO SomeTable VALUES ('string1', 'another string') 
INSERT INTO SomeTable VALUES ('string2', 'another string') 
INSERT INTO SomeTable VALUES ('string3', 'another string') 
INSERT INTO SomeTable VALUES ('AAA AAA', 'ZZZZZZZ') 
INSERT INTO SomeTable VALUES ('BB BBBB', 'ZZZZZZZ') 
INSERT INTO SomeTable VALUES ('CCCC CC', 'ZZZZZZZ') 

是否清楚我需要做什麼?

不幸的是,我的excel功能非常差,所以我無法想出辦法做到這一點。

任何幫助?

非常感謝!

回答

2

在這裏你去,

假設的數量是根據工作表/和範圍塔A中,並在列B中的兩個字符串和C分別

在小區F2

=IF(C2="",C1,C2) 

將這個和這個在細胞I2

="INSERT INTO SomeTable VALUES('" & B2 & "','" & F2 & "')" 

然後在列F和I中上下複製公式。

希望你應該看看它是如何工作的

+0

我想出了一些類似的東西,但這不起作用,因爲每行生成1個插入,在示例中,第一行需要生成3個插入,因爲有3個字符串由第2列的分隔線分隔。如果我可以使用分隔線作爲分隔符將不同行分隔第2列,這對分區有很大幫助。 – emzero 2010-03-01 20:34:39

+0

分隔項目的數量總是一樣嗎?或者至少在一個範圍內? – CResults 2010-03-01 20:42:43

+0

不幸的是沒有。可能是1 upto infinity = P – emzero 2010-03-01 20:46:37

0

你打算使用哪種數據庫?

您是否熟悉「TOAD」工具?

+0

數據庫已經存在,它是SQL Server 2005.不,我不熟悉那個工具。我只需要生成這些查詢......或者如果我可以使用分隔線作爲分隔符將第二列分成多行,那將對我有很大幫助。 – emzero 2010-03-01 20:25:37

+0

TOAD AFAIK特定於Oracle – CResults 2010-03-01 20:32:22

0

首先創建一個linkedServer於有關

declare @server varchar(100),@dropLogins varchar(20) 
select @server='myExcelBook',@dropLogins='droplogins' 

Exec sp_dropServer @server,@[email protected]  


    EXEC sp_addlinkedserver @server, 
     'ACE 12.0', 
     'Microsoft.ACE.OLEDB.12.0', 
     'c:\MyExcelBooks\myExcelBool.xls', 
     NULL, 
     'Excel 12.0' 

exec sp_linkedServers 

ACE 12.0 Excel工作表時,Excel 12.0和Microsoft.ACE.Oledb.12.0是Excel 2007中 提供商名稱如果您有Excel的不同版本你有用正確的文字替換這些文字。 還需要將excel安裝在數據庫服務器上。

一旦你在上面所做的.. 你可以把工作簿中的每個工作表的表

所以插入數據SomeTable是這樣

Insert SomeTable(column1,Column2,Column3) 
Select Column1,Column2+Column3,Column3 from myExcelbook..Sheet1$ 

注意$符號是要附加到您正在引用的工作表。

添加鏈接服務器後,可以看到服務器對象/ LinkedServers/myExcelBook /目錄/ Defautlt /表

+0

對不起,但這將如何幫助我? – emzero 2010-03-01 20:36:02

+0

您可以通過在select語句中對列進行連接來完成此操作我編輯了答案以反映出 – TonyP 2010-03-01 20:49:21