2014-11-05 210 views
0

我只是試圖從Excel文件添加數據到SQL Server。我可以將整個新表格導入,但這意味着我必須重新分配索引。是否可以導入到現有的表格中?從Excel導入數據到SQL Server

只見another question與此類似,我試了一下建議在那裏,點擊「編寫一個查詢來指定數據傳輸」

From this diagram

我進入下面的查詢

INSERT INTO Customer (Customer_Id, Customer_Name, Customer_Company, Address, Phone) 
    SELECT 
     A.[Column1], A.[Column2], A.[Column3], A.[Column4], A.[Column5] 
    FROM 
     OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\Excel.xls;HDR=YES', 'select * from [Sheet1$]') AS A; 

我真的不明白它的第二部分的語法..我在FROM子句中出現語法錯誤。

任何線索?

+1

你有沒有考慮過使用SSIS?以這種方式導入Excel Spreadsheet相當容易,而且可能比編寫SQL Query更優雅。 – 2014-11-06 01:41:54

+0

@greg從來沒有真正想過使用它。因爲我無法找到一種方法,我再次創建整個數據庫。 :/ – Tsar 2014-11-06 02:13:21

回答

2

從Excel導入數據以進行一次性導入的最簡單方法是使用SQL Server導入和導出嚮導,如問題圖片中所示。您應該選擇Microsoft Excel作爲數據源,指定電子表格的文件路徑,並指定第一行是否包含列標題。然後指定目標SQL服務器和數據庫。

從圖表中選擇的其他選項 - 「從一個或多個表格或視圖中複製數據」。然後,您可以在電子表格中選擇要導入的工作表,然後指定要將數據放入的目標表。重要的是,您可以編輯映射,以便電子表格中的數據進入表格中的正確列 - 既可以是現有的表格,也可以是新的表格。在幕後,嚮導正在爲您的問題生成類似的腳本,但如果您正確設置了嚮導,則不必擔心。

從內存中,您還可以將其轉換爲SSIS包,因此它是一個可重複的過程。

+0

正如我在問題中提到的,問題是我是否可以將excel文件導入到_existing_表中或不是。 現在我選擇了「從一個或多個表或視圖複製數據」,這意味着我必須將數據導入到新表中,後來我不得不編輯並插入外鍵和其他索引。問題是關於'寫一個查詢來指定數據傳輸'。我在以前的網上找到了在線教程,但不是那個正在尋找的人... – Tsar 2014-11-06 05:08:34

+0

是的,您可以使用此方法將其導入到現有的表格中。您需要考慮的事項有: 1.確保您的數據類型與電子表格相匹配 2.考慮表中存在的主鍵。 – 2014-11-06 05:19:08

+0

我確保數據名稱(excel文件,上行和db中的列名稱)匹配。但是數據類型可能不對。我有像「1001」插入到主鍵的值。 DB把它當作浮點數(當我再次艱苦地完成時)把它當作浮點數來處理,因爲我已經在表格中聲明瞭它作爲varchar。可能是這個問題,呃? 但是這並不能解釋我得到的語法錯誤(在問題中)。 – Tsar 2014-11-06 05:25:40

2

你可以從sql server中的單元格複製和粘貼excel。 :DD

我現在看到了這個,當時我面臨同樣的問題。

這是我做過什麼:

我從Excel中複製我的數據:enter image description here

接下來在SQL Server中,我爲了我的表生成腳本編輯200行:

enter image description here

然後在編輯行的最後一行中,您將超出以下值:

enter image description here

就是這樣!易peasy