2009-08-21 13 views
53

Czy ktoś może wyjaśnić, jak zaimportować plik Microsoft Excel do bazy danych MySQL?Jak zaimportować plik Excela do bazy danych MySQL

Na przykład, mój Excel wygląda następująco:

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

Greece | 9377  | 0.80 

Australia | 9375  | 0.80 

z góry dzięki.

Fero

+1

To darmowe narzędzie umożliwia importowanie arkuszy kalkulacyjnych Excel w tabelach MySQL szybkiego i łatwego http://panofish.net/convert-import-excel-spreadsheets-into-mysql-database/ – panofish

+0

+1 do nowego i innego pomysłu . Przetwarzanie jest niesamowicie powolne, najpierw odczytuje każdy wiersz w pliku, a następnie przesyła wszystko. Zajęło około 15 minut, aby zaimportować 5.2K wierszy – Fr0zenFyr

+0

Dla niektórych arkuszy kalkulacyjnych może być wolny, ze względu na liczbę kolumn i wierszy. Ale winię za to bibliotekę com-object Microsoftu, która jest używana do odczytu arkusza kalkulacyjnego. Mój program czyta arkusz kalkulacyjny tak szybko, jak zezwala na to biblioteka. Wkładki mysql są bardzo szybkie. Jeśli możesz wyeliminować niepotrzebne kolumny przed zaimportowaniem ... to może pomóc. – panofish

Odpowiedz

38
  1. Export to w pewnym formacie tekstowym. Najprostsza wersja będzie prawdopodobnie rozdzielana tabulatorami, ale CSV też może działać.

  2. Użyj możliwości ładowania danych. Zobacz http://dev.mysql.com/doc/refman/5.1/en/load-data.html

  3. Spójrz w połowie drogi w dół strony, jako że daje dobry przykład zakładki oddzielone danych:

    FIELDS zakończone przez '\ t' otoczonej '' ESCAPED BY '\'

  4. Sprawdź swoje dane. Czasami cytowanie lub ucieczka ma problemy, i musisz dostosować swoje źródło, zaimportować polecenie - lub może być łatwiejsze do post-process przez SQL.

+1

Podczas eksportowania do pliku CSV [co najmniej] Excel 2013 aktywnie próbuje zatruć dane za pomocą podwójnych cytatów z VBA, używając separatora dziesiętnego zależnego od ustawień regionalnych (w oparciu o regionalne ustawienia systemu operacyjnego) dla wartości 0 (np. "," Podczas używania " zdefiniowane w separatorze właściwości komórki dla wszystkich innych wartości Najlepiej trzymać z dala od CSV – afk5min

+1

Należy pamiętać, że ta procedura wymaga najpierw utworzenia tabeli z odpowiednimi polami – LarsH

+0

To nie jest jedyny problem. jeśli ta procedura działa poprawnie z powrotem karetki w komórce w programie excel. Nawet import z csv do excel kończy się niepowodzeniem w tym –

23

jest kilka sposoby importowania pliku excel do bazy danych MySQL o różnym stopniu złożoności i powodzenia.

  1. Excel2MySQL lub Navicat narzędzia. Pełne ujawnienie, jestem autorem Excel2MySQL. Te 2 narzędzia nie są darmowe, ale są najprostszą opcją i mają najmniejsze ograniczenia. Zawierają również dodatkowe funkcje ułatwiające importowanie danych Excel do MySQL. Na przykład Excel2MySQL automatycznie tworzy twoją tabelę i automatycznie optymalizuje typy danych pól, takie jak daty, godziny, paczki itp. Jeśli się spieszysz lub nie możesz uzyskać innych opcji do pracy z danymi, te narzędzia mogą odpowiadać twoim potrzebom.

    screenshot of Excel2MySQL

  2. LOAD DATA INFILE: Ta popularna opcja jest chyba najbardziej techniczny i wymaga zrozumienia MySQL wykonanie polecenia. Musisz ręcznie utworzyć swoją tabelę przed załadowaniem i użyć odpowiednio dopasowanych typów pól VARCHAR. Dlatego też typy danych pól nie są zoptymalizowane. LOAD DATA INFILE ma problem z importowaniem dużych plików, które przekraczają rozmiar "max_allowed_packet". Szczególną uwagę należy zwrócić, aby uniknąć problemów z importowaniem znaków specjalnych i obcych znaków Unicode. Oto najnowszy przykład, za pomocą którego zaimportowałem plik csv o nazwie test.csv.

    enter image description here

  3. phpMyAdmin: Wybierz bazę danych, następnie wybierz zakładkę Import. phpMyAdmin automatycznie utworzy tabelę i zwiększy rozmiar pól VARCHAR, ale nie zoptymalizuje typów pól. phpMyAdmin ma problemy z importowaniem dużych plików, które przekraczają rozmiar "max_allowed_packet".

    enter image description here

  4. MySQL for Excel: Jest to darmowa Excel Add-in z Oracle. Ta opcja jest nieco uciążliwa, ponieważ używa kreatora, a import jest powolny i ma duże błędy, ale może to być dobra opcja dla małych plików z danymi VARCHAR. Pola nie są zoptymalizowane.

    enter image description here

+0

Hi @panofish, Mam excel, który jest aktualizowany codziennie. Chciałbym umieścić tylko updat ed dane do umieszczenia w tabeli bazy danych mysql zamiast całej tabeli. (tzn. umieść jeden wiersz w tabeli na dzień. Jak to zrobić? –

+0

Rozwiązania te koncentrują się na ładowaniu całego arkusza kalkulacyjnego i zastępowaniu tabeli MySQL lub dołączaniu do tabeli. Czy zmiany wprowadzają nowe rekordy lub zmieniają istniejące rekordy? – panofish

+0

Po prostu zastępują wartości. Ale chcę tylko te wartości, które mają być dołączone, które nie są już obecne w bazie danych na podstawie daty. Może to zwiększyć wydajność, dodając kilka wierszy zamiast dodawać wiele wierszy dziennie. –

79

Jest to proste narzędzie online, które można zrobić to nazywa sqlizer.io.

Screenshot from sqlizer.com

przesłać plik XLSX do niego wprowadzić nazwę arkusza i zakres komórek, a to generuje CREATE TABLE i grono INSERT importować wszystkie swoje dane do bazy danych MySQL.

+1

to jest fantastyczne! Chciałbym wiedzieć o tym ... er .... półtora roku temu? – Piotr

+11

Dobrze wiedzieć, że to narzędzie istnieje , ale zdecydowanie zastanów się, czy powinieneś go używać, czy nie. Jeśli Twój arkusz kalkulacyjny zawiera poufne dane (np. e-maile użytkownika, hasła, informacje o cc, informacje medyczne itp.), może to nie być dobry pomysł. Ta strona może nie przechowywać Twoich danych i może być bezpieczny, ale nie ma możliwości, abyś to wiedział na pewno: –

+1

jest za darmo? Próbowałem, ale oni proszą o zapłatę: –

2

Nie wiem, czy masz wszystkie ustawienia, ale dla mnie używam PHP i MYSQL. Używam więc klasy PHP PHPExcel. Zabiera to plik w prawie dowolnym formacie, xls, xlsx, cvs, ... a następnie pozwala na czytanie i/lub wstawianie.

To, co robię, to ładowanie programu excel do obiektu phpexcel, a następnie przeglądanie wszystkich wierszy. Na podstawie tego, co chcę, piszę proste polecenie wstawiania SQL, aby wstawić dane do pliku Excela do mojej tabeli.

Z przodu jest to małe dzieło, ale jest to tylko kwestia ulepszenia niektórych istniejących przykładów kodu. Ale gdy już to wybierzesz, wprowadzenie zmian do importu jest proste i szybkie.

0

Podczas importowania danych za pomocą plików tekstowych miałem problemy z cytatami i sposobem formatowania liczb przez program Excel. Na przykład moja konfiguracja programu Excel użyła przecinka jako separatora dziesiętnego zamiast kropki.

Teraz używam Microsoft Dostęp 2010, aby otworzyć mój stół MySql jako połączoną tabelę. Tam mogę po prostu skopiować i wkleić komórki z Excela do Access. Aby uzyskać to, najpierw zainstaluj MySql ODBC driver. Następnie w oknie dostępu, w zakładce "Dane zewnętrzne" otwórz okno "ODBC Database" i połącz się z dowolną tabelą za pomocą połączenia ODBC.

0

Można użyć DocChow, bardzo intuicyjnego GIU do importowania Excela do MySQL, i to za darmo na większości popularnych platform (w tym Linux).

Bardziej szczegółowo, jeśli martwisz się o datę, typy datetime, DocChow łatwo obsługuje typy danych. Jeśli pracujesz z wieloma arkuszami kalkulacyjnymi Excel, które chcesz zaimportować do jednej tabeli MySQL, DocChow robi brudną robotę.

1

Najlepszym i najprostszym sposobem jest użycie aplikacji "MySQL for Excel", która jest bezpłatną aplikacją od Oracle. ta aplikacja dodała wtyczkę do programu Excel, aby eksportować i importować dane do mysql. można go pobrać z here

13

Poniżej znajduje się kolejna metoda importowania danych arkusza kalkulacyjnego do bazy danych MySQL, która nie polega na dodatkowym oprogramowaniu. Załóżmy, że chcesz zaimportować tabelę programu Excel do tabeli bazy danych MySQL o nazwie mydatabase.

  1. Wybierz odpowiednie komórki:

    enter image description here

  2. wklej do Mr. Data Converter i wybrać wyjście jak MySQL:

    enter image description here

  3. zmienić nazwę tabeli i definicje kolumn do dopasuj swoje wymagania do wygenerowanego wyjścia:

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); 
  1. Jeśli używasz MySQL Workbench lub już zalogowany do mysql z wiersza poleceń, a następnie można wykonać wygenerowane SQL bezpośrednio od kroku 3. W przeciwnym razie, pasty kod w pliku tekstowym (np import.sql) i wykonanie polecenia z powłoki Unix:

    mysql mydatabase < import.sql

    Inne możliwości importowania z pliku SQL można znaleźć w this Stack Overflow answer.

+1

Bardzo mi to pomogło. Dziękuję Ci. – Ionut

+0

Dziękuję. Szukałem tego rozwiązania :) –

Powiązane problemy