2009-08-21 188 views
53

任何人都可以解釋如何將Microsoft Excel文件導入到MySQL數據庫中嗎?如何將excel文件導入到MySQL數據庫中

例如,我的Excel表格是這樣的:提前

Country | Amount | Qty 
---------------------------------- 
America | 93  | 0.60 

Greece | 9377  | 0.80 

Australia | 9375  | 0.80 

感謝。

FERO

+1

這免費的實用工具,使導入Excel電子表格到MySQL錶快速和容易http://panofish.net/convert-import-excel-spreadsheets-into-mysql-database/ – panofish 2013-06-13 20:06:12

+0

+1一個新的和不同的想法。處理速度非常慢,它首先讀取文件中的每一行,然後上傳任何內容。大約需要15分鐘導入5.2K行 – Fr0zenFyr 2013-09-20 11:27:16

+0

對於某些電子表格,由於列和行的數量,它可能會很慢。但是,我責怪微軟的COM對象庫,這是用來閱讀電子表格。我的程序以圖書館允許的速度讀取電子表格。 MySQL插入速度非常快。如果您可以在導入之前刪除不必要的列...可以提供幫助。 – panofish 2014-01-27 21:10:30

回答

38
  1. 出口成一些文本格式。最簡單的可能是製表符分隔版本,但CSV也可以。

  2. 使用加載數據功能。見http://dev.mysql.com/doc/refman/5.1/en/load-data.html

  3. 看一半下來的頁面,因爲它會給出製表符分隔數據的好例子:

    FIELDS TERMINATED BY ENCLOSED BY '' ESCAPED BY '\'

  4. '\ t'

    檢查您的數據。有時引用或轉義有問題,您需要調整源代碼,導入命令 - 或者通過SQL後處理可能會更容易。

+1

當導出到CSV,[至少]練成2013通過使用VBA轉義雙引號,使用區域設置相關的(基於OS區域設置)小數分隔爲0的值(例如」,‘積極嘗試毒數據,而使用’在單元格屬性分隔符定義的所有其他值。最好從CSV望而卻步。 – afk5min 2014-04-12 15:14:14

+1

注意,此過程需要先創建表,用適當的領域。 – LarsH 2016-03-24 15:00:16

+0

這是不是唯一的問題。我不知道如果這個過程在Excel單元格。即使從CSV青出於藍而進口內回車正確的交易失敗,在 – 2016-04-12 10:35:06

23

實際上有幾個以不同程度的複雜性和成功將excel文件導入到MySQL數據庫的方法。

  1. Excel2MySQLNavicat工具。充分披露,我是Excel2MySQL的作者。這兩個實用程序不是免費的,但它們是最簡單的選項,並且具有最少的限制。它們還包含其他功能來幫助將Excel數據導入MySQL。例如,Excel2MySQL會自動創建表並自動優化字段數據類型,如日期,時間,浮點數等。如果您急於或無法使用其他選項來處理數據,那麼這些實用程序可能會滿足您的需求。

    screenshot of Excel2MySQL

  2. LOAD DATA INFILE:這個流行的選擇也許是最技術和需要MySQL命令執行有一定的瞭解。您必須在加載之前手動創建表並使用適當大小的VARCHAR字段類型。因此,您的字段數據類型未經優化。 LOAD DATA INFILE無法導入超過「max_allowed_pa​​cket」大小的大文件。需要特別注意避免導入特殊字符和外來Unicode字符的問題。以下是我用來導入名爲test.csv的csv文件的最近示例。

    enter image description here

  3. phpMyAdmin:首先選擇你的數據庫,然後選擇導入選項卡。 phpMyAdmin會自動創建你的表並調整VARCHAR字段的大小,但是它不會優化字段類型。 phpMyAdmin無法導入超過「max_allowed_pa​​cket」大小的大文件。

    enter image description here

  4. MySQL for Excel:這是一個免費的Excel加載從Oracle。這個選項有點繁瑣,因爲它使用了一個嚮導,並且導入速度很慢,並且有大文件的問題,但對於具有VARCHAR數據的小文件來說,這可能是一個不錯的選擇。字段沒有優化。

    enter image description here

+0

嗨@panofish,我有一個每天更新的Excel。我只想把更新把數據放到mysql數據庫表中而不是整個表中。 (即)每天在桌子上放一行。如何才能做到這一點? – 2014-11-24 07:35:41

+0

這些解決方案都專注於加載整個電子表格並替換您的MySQL表格或附加到表格中。更改是否添加新記錄或更改現有記錄? – panofish 2014-11-24 14:20:04

+0

它們只是覆蓋這些值。但我只想要附加那些基於日期的數據庫中尚未存在的值。這可以通過添加一些行而不是每天添加多行來提高性能。 – 2014-11-25 02:34:58

79

有一個簡單的在線工具,可以做到這一點稱爲sqlizer.io

Screenshot from sqlizer.com

您上傳XLSX文件,請輸入一個工作表名稱和單元格範圍,它會生成一個CREATE TABLE語句和一堆INSERT語句的所有數據導入到一個MySQL數據庫。

+1

這是太棒了!我希望我能知道這......呃....一年半前? – Piotr 2016-03-03 16:36:06

+11

好知道這個工具存在,但絕對要考慮是否應該使用它。如果你的電子表格包含敏感數據(例如用戶電子郵件,密碼,cc信息,醫療信息等),這可能不是一個好主意。它可能是安全的,但沒有辦法讓你知道這是肯定的。 – 2016-08-02 15:46:21

+1

這是免費的嗎?我試過但他們要求支付 – 2016-12-07 10:16:35

2

不知道你是否擁有所有這些設置,但對於我來說,我使用的是PHP和MYSQL。所以我使用PHP類PHPExcel。這需要幾乎任何格式的文件,xls,xlsx,cvs,...然後讓您讀取和/或插入。

所以我做的是將excel加載到phpexcel對象中,然後循環遍歷所有行。基於我想要的,我編寫了一個簡單的SQL插入命令,將excel文件中的數據插入到我的表中。

在前端是一個小工作,但它只是調整一些現有的代碼示例。但是,當您撥打電話進行更改時,導入過程簡單快捷。

0

當使用文本文件導入數據時,我遇到了報價問題以及Excel如何格式化數字。例如,我的Excel配置使用逗號作爲小數點分隔符而不是點。

現在我使用微軟訪問 2010打開我的MySql表作爲鏈接表。在那裏,我可以簡單地將單元格從Excel複製並粘貼到Access。

要做到這一點,首先安裝MySql ODBC driver並創建一個ODBC connection。 然後在訪問中,在「外部數據」選項卡中,打開「ODBC數據庫」對話框並使用ODBC連接鏈接到任何表。

0

你可以使用DocChow,一個很直觀的GIU導入的Excel到MySQL,它是免費的最常見的平臺(包括Linux)。

更多,特別是如果你擔心日期,日期時間數據類型,DocChow輕鬆處理數據類型。如果您正在處理多個要導入到一個MySQL表格中的Excel電子表格,DocChow可以完成骯髒的工作。

1

最好也是最簡單的方法是使用Oracle的免費應用程序「MySQL for Excel」應用程序。這個應用程序添加了一個插件來出口和導入數據到MySQL。您可以從here下載

13

下面是將電子表格數據導入到不依賴任何額外軟件的MySQL數據庫的另一種方法。假設您要將Excel表導入名爲mydatabase的MySQL數據庫的sales表中。

  1. 選擇相應的單元格:

    enter image description here

  2. 粘貼到Mr. Data Converter,並選擇輸出爲MySQL的:

    enter image description here

  3. 更改表名和字段定義在生成的輸出中符合您的要求:

CREATE TABLE sales (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    Country VARCHAR(255), 
    Amount INT, 
    Qty FLOAT 
); 
INSERT INTO sales 
    (Country,Amount,Qty) 
VALUES 
    ('America',93,0.60), 
    ('Greece',9377,0.80), 
    ('Australia',9375,0.80); 
  • 如果您使用MySQL Workbench或已經登錄到mysql從命令行,則可以執行從直接步驟3中生成的SQL語句。否則,將代碼粘貼到一個文本文件(例如,import.sql)和Unix外殼執行以下命令:

    mysql mydatabase < import.sql

    其他方式從SQL文件導入可以this Stack Overflow answer找到。

  • +1

    這對我有很大的幫助。謝謝。 – Ionut 2017-06-27 17:44:16

    +0

    謝謝。我一直在尋找這個解決方案:) – 2018-01-26 15:03:41

    相關問題