Jak zaimportować plik Excela do bazy danych MySQL

88

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

Na przykład moja tabela programu Excel wygląda następująco:

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

Greece    |   9377     |   0.80

Australia |   9375     |   0.80
Fero
źródło
[Możesz zajrzeć do tego wątku] [1] na forach MySQL. Wyjaśnia, jak robić dokładnie to, co chcesz. [1]: forums.mysql.com/read.php?32,216343,216344#msg-216344
Kredns,
1
To bezpłatne narzędzie umożliwia szybkie i łatwe importowanie arkuszy kalkulacyjnych programu Excel do tabel mysql panofish.net/…
panofish
+1 za nowy i inny pomysł. Przetwarzanie jest niesamowicie wolne, najpierw czyta każdy wiersz w pliku, a następnie przesyła wszystko. Importowanie 5,2 tys. Wierszy zajęło około 15 minut
Fr0zenFyr
W przypadku niektórych arkuszy kalkulacyjnych może to działać wolno ze względu na liczbę kolumn i wierszy. Ale obwiniam bibliotekę microsofts com-object, która jest używana do czytania arkusza kalkulacyjnego. Mój program czyta arkusz kalkulacyjny tak szybko, jak pozwala na to biblioteka. Wstawki mysql są bardzo szybkie. Jeśli możesz wyeliminować niepotrzebne kolumny przed importowaniem ... to może pomóc.
panofish
Miałem 14 kolumn w 5173 rzędach. Wybrałem już wszystkie puste kolumny / wiersze i usunąłem je, aby uniknąć niepotrzebnego przetwarzania. Sytem, ​​którego używałem, miał 2,5G RAM i procesor core2duo, nie miał uruchomionych wielu procesów, zakładka wydajności pokazała 65% wykorzystania i dużo pamięci RAM wciąż niewykorzystanej. Więc myślę, że nie winiłbym sprzętu, ale tak jak powiedziałeś, obiekty MS com są do niczego ... Nie wiem, kiedy SM przestanie budować bzdury, które wyglądają jak ratowanie życia dla nowicjuszy. Mam dość robienia dodatkowego gówna dla produktów stwardnienia rozsianego.
Fr0zenFyr

Odpowiedzi:

46
  1. Wyeksportuj go do jakiegoś formatu tekstowego. Najłatwiejsza będzie prawdopodobnie wersja rozdzielana tabulatorami, ale CSV też może działać.

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

  3. Spójrz do połowy strony, bo to dobry przykład dla danych rozdzielonych tabulatorami:

    POLA ZAKOŃCZONE PRZEZ „\ t” OBJĘTE PRZEZ „UCIECZKA PRZEZ„ \ ”

  4. Sprawdź swoje dane. Czasami cytowanie lub ucieczka powoduje problemy i musisz dostosować źródło, polecenie importu - lub po prostu może być łatwiejsze przetwarzanie końcowe przez SQL.

ndp
źródło
2
Podczas eksportowania do CSV, [przynajmniej] program Excel 2013 aktywnie próbuje zatruć dane za pomocą podwójnych cudzysłowów ze zmianą znaczenia w języku VBA, używając zależnego od ustawień regionalnych (na podstawie ustawień regionalnych systemu operacyjnego) separatora dziesiętnego dla wartości 0 (np. „,”, Podczas używania „zgodnie z definicją” w separatorze właściwości komórki dla wszystkich innych wartości. Najlepiej trzymać się z daleka od CSV.
afk5min
1
Zwróć uwagę, że ta procedura wymaga najpierw utworzenia tabeli z odpowiednimi polami.
LarsH
To nie jedyny problem. Nie jestem pewien, czy ta procedura poprawnie radzi sobie z powrotem karetki wewnątrz komórki w programie Excel. Nawet import z csv do excel zawodzi w tym
Raul Luna
1
@ afk5min co rozumiesz przez „trujące dane” ??? Wszystkie te tagi i znaczniki są bardzo przydatne dla użytkowników, którzy zamierzają oczywiście zaimportować je do innego produktu MS ...
Mindwin
1
* Miałeś na myśli „najtrudniejszy sposób”, a nie najłatwiejszy
Revious
102

Istnieje proste narzędzie online, które może to zrobić, o nazwie sqlizer.io .

Zrzut ekranu z sqlizer.com

Prześlij do niego plik XLSX, wprowadź nazwę arkusza i zakres komórek, a wygeneruje on instrukcję CREATE TABLE i kilka instrukcji INSERT, aby zaimportować wszystkie dane do bazy danych MySQL.

(Zastrzeżenie: pomagam uruchomić SQLizer)

d4nt
źródło
22
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żytkowników, hasła, dane DW, informacje medyczne itp.), Może to nie być dobry pomysł. Ta witryna może nie przechowywać twoich danych i może być bezpieczna, ale nie ma sposobu, abyś wiedział o tym na pewno.
Chris Schmitz
1
@DivyeshJesadiya To nic nie kosztuje dla czegokolwiek do 5000 wierszy. Następnie musisz zapłacić 10 USD za miesiąc użytkowania.
d4nt
@doxsi wydaje mi się w porządku, jaki miałeś z tym problem?
d4nt
@ChrisSchmitz jesteśmy bardzo ostrożni w kwestii bezpieczeństwa i niedawno napisaliśmy na blogu post o tym, jak działamy w SQLizer blog.sqlizer.io/posts/privacy-at-sqlizer
a_good_swan
Działa, zwróć uwagę na format Excela, xlt nie jest akceptowany, a xls jest akceptowany.
Emanuel Pirovano
40

Poniżej znajduje się inna metoda importowania danych z arkusza kalkulacyjnego do bazy danych MySQL, która nie wymaga żadnego dodatkowego oprogramowania. Załóżmy, że chcesz zaimportować tabelę programu Excel do salestabeli bazy danych MySQL o nazwie mydatabase.

  1. Wybierz odpowiednie komórki:

    wprowadź opis obrazu tutaj

  2. Wklej do Mr. Data Converter i wybierz wyjście jako MySQL:

    wprowadź opis obrazu tutaj

  3. Zmień nazwę tabeli i definicje kolumn, aby dopasować je do swoich wymagań w wygenerowanym wyniku:

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 jesteś już zalogowany mysqlz wiersza poleceń, możesz wykonać wygenerowane instrukcje SQL bezpośrednio z kroku 3. W przeciwnym razie wklej kod do pliku tekstowego (np. import.sql) I wykonaj następujące polecenie z powłoki Unix:

    mysql mydatabase < import.sql

    Inne sposoby importowania z pliku SQL można znaleźć w tej odpowiedzi na temat przepełnienia stosu .

thdoan
źródło
1
To był najłatwiejszy sposób. Dzięki! Pamiętaj tylko, aby usunąć dodatkowy identyfikator klucza podstawowego w SQL i umieścić wybrany przez siebie przyrost AUTO.
Fandango68
29

W rzeczywistości istnieje kilka sposobów importowania pliku Excela do bazy danych MySQL o różnym stopniu złożoności i powodzeniu.

  1. Excel2MySQL . Bez wątpienia najłatwiejszy i najszybszy sposób importowania danych Excela do MySQL. Obsługuje wszystkie wersje programu Excel i nie wymaga instalacji pakietu Office.

    zrzut ekranu programu Excel2MySQL

  2. LOAD DATA INFILE : Ta popularna opcja jest prawdopodobnie najbardziej techniczna i wymaga pewnego zrozumienia wykonywania poleceń MySQL. Musisz ręcznie utworzyć tabelę przed załadowaniem i użyć odpowiednich typów pól VARCHAR. Dlatego 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”. Należy zwrócić szczególną uwagę, aby uniknąć problemów z importowaniem znaków specjalnych i obcych znaków Unicode. Oto ostatni przykład, którego użyłem do zaimportowania pliku csv o nazwie test.csv.

    wprowadź opis obrazu tutaj

  3. phpMyAdmin : Najpierw wybierz bazę danych, a następnie wybierz kartę Importuj. phpMyAdmin automatycznie utworzy tabelę i dostosuje rozmiar pól VARCHAR, ale nie zoptymalizuje typów pól. phpMyAdmin ma problem z importowaniem dużych plików, które przekraczają rozmiar „max_allowed_packet”.

    wprowadź opis obrazu tutaj

  4. MySQL dla programu Excel : jest to bezpłatny dodatek do programu Excel firmy Oracle. Ta opcja jest trochę uciążliwa, ponieważ używa kreatora, a importowanie jest powolne i błędne w przypadku dużych plików, ale może to być dobra opcja w przypadku małych plików z danymi VARCHAR. Pola nie są zoptymalizowane.

    wprowadź opis obrazu tutaj

panofisz
źródło
Cześć @panofish, mam program Excel, który jest aktualizowany codziennie. Chciałbym umieścić tylko zaktualizowane dane do tabeli bazy danych mysql, a nie całą tabelę. (tj.) umieszczaj jeden wiersz w tabeli dziennie. Jak można to zrobić?
Arun Raja
Wszystkie te rozwiązania koncentrują się na załadowaniu całego arkusza kalkulacyjnego i zastąpieniu tabeli MySQL lub dołączeniu do tabeli. Czy zmiany powodują dodanie nowych rekordów czy zmianę istniejących rekordów?
panofish
Po prostu nadpisują wartości. Ale chcę, aby były dołączane tylko te wartości, których nie ma już w bazie danych na podstawie daty. Może to zwiększyć wydajność, dodając po prostu kilka wierszy zamiast codziennie dodawać wiele wierszy.
Arun Raja,
2
Narzędzie Excel2MySQL powinno mieć możliwość tworzenia tylko skryptu bazy danych :(
joseantgv
PHPMyAdmin był najłatwiejszy i najszybszy.
Amir Hajiha
2

Nie jestem pewien, czy masz całą tę konfigurację, ale dla mnie używam PHP i MYSQL. Więc używam PHPExcel klasy PHP. Pobiera to plik w prawie każdym formacie, xls, xlsx, cvs, ... a następnie pozwala na odczyt i / lub wstawienie.

Więc to, co robię, to ładowanie programu Excel do obiektu phpexcel, a następnie zapętlanie wszystkich wierszy. Na podstawie tego, czego chcę, piszę proste polecenie wstawiania SQL, aby wstawić dane z pliku Excela do mojej tabeli.

Na początku jest to trochę pracy, ale to tylko kwestia poprawienia niektórych istniejących przykładów kodu. Ale kiedy już go wybierzesz, wprowadzanie zmian w imporcie jest proste i szybkie.

user1441213
źródło
1

Najlepszym i najłatwiejszym sposobem jest użycie aplikacji „MySQL for Excel”, która jest bezpłatną aplikacją firmy Oracle. ta aplikacja dodała wtyczkę do programu Excel do eksportowania i importowania danych do mysql. możesz to pobrać stąd

Sadeq Shajary
źródło
1

Używając plików tekstowych do importowania danych, miałem problemy z cudzysłowami i formatowaniem liczb w programie Excel. Na przykład moja konfiguracja programu Excel używała przecinka jako separatora dziesiętnego zamiast kropki.

Teraz używam Microsoft Access 2010 do otwierania mojej tabeli MySql jako tabeli połączonej. Tam mogę po prostu skopiować i wkleić komórki z programu Excel do programu Access.

Aby to zrobić, najpierw zainstaluj sterownik MySql ODBC i utwórz połączenie ODBC . Następnie w programie Access, na karcie „Dane zewnętrzne”, otwórz okno dialogowe „Baza danych ODBC” i połącz się z dowolną tabelą za pomocą połączenia ODBC.

Korzystając z MySql Workbench , możesz także skopiować i wkleić dane Excela do siatki wyników MySql Workbench. W tej odpowiedzi podałem szczegółowe instrukcje .

Christophe Weis
źródło
0

Aby zapoznać się z przykładem krok po kroku importowania programu Excel 2007 do MySQL z poprawnym kodowaniem (UTF-8), wyszukaj ten komentarz:

„Wysłane przez: Mike Laird, 13 października 2010 r., 00:50”

w następnym adresie URL:

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

Raúl Moreno
źródło
0

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

W szczególności, jeśli martwisz się o typy danych typu data, data i godzina , DocChow z łatwością obsługuje typy danych. Jeśli pracujesz z wieloma arkuszami kalkulacyjnymi Excel, które chcesz zaimportować do jednej tabeli MySQL, DocChow wykonuje brudną robotę.

Seanj1000
źródło
0

Krok 1 Utwórz plik CSV

Krok 2 Zaloguj się do swojego serwera mysql

     mysql -uroot -pyourpassword 

Krok 3 Załaduj swój plik CSV

     load data local infile '//home/my-sys/my-excel.csv' into table my_tables fields terminated by ',' enclosed by '"' (Country, Amount,Qty);
Syed Shibli
źródło
0

Innym przydatnym narzędziem, jako zamiennik interfejsu MySQL, jest Toad for MySQL . Niestety nie jest już obsługiwany przez Quest , ale genialne IDE dla MySQL, z kreatorami IMPORT i EKSPORT, obsługujące większość typów plików.

Fandango68
źródło