Jaki jest najlepszy / najszybszy sposób przesłania pliku csv do tabeli mysql? Chciałbym, aby pierwszy wiersz danych był używany jako nazwy kolumn.
Znajdź to:
Jak zaimportować plik CSV do tabeli MySQL
Ale jedyną odpowiedzią było użycie GUI, a nie powłoki?
Odpowiedzi:
Zamiast pisać skrypt pobierający informacje z pliku CSV, możesz bezpośrednio połączyć z nim MYSQL i przesłać informacje przy użyciu następującej składni SQL.
Aby zaimportować plik Excel do MySQL, najpierw wyeksportuj go jako plik CSV. Usuń nagłówki CSV z wygenerowanego pliku CSV wraz z pustymi danymi, które program Excel mógł umieścić na końcu pliku CSV.
Następnie możesz zaimportować go do tabeli MySQL, uruchamiając:
jak czytano: Importuj plik CSV bezpośrednio do MySQL
EDYTOWAĆ
W twoim przypadku musisz najpierw napisać interpretera, aby znaleźć pierwszy wiersz i przypisać je jako nazwy kolumn.
EDYCJA-2
Z dokumentacji MySQL na temat
LOAD DATA
składni :Dlatego możesz użyć następującej instrukcji:
źródło
IGNORE 1 LINES
do zapytaniaOto prosty skrypt wiersza poleceń PHP, który zrobi to, czego potrzebujesz:
Utworzy tabelę na podstawie pierwszego wiersza i zaimportuje do niej pozostałe wiersze. Oto składnia wiersza poleceń:
źródło
fields terminated by ','
... działa nawet z plikami CSV z częściowo podwójnymi cudzysłowami.ENCLOSED BY '\"'
... także, wiele osób będzie potrzebować,LINES TERMINATED BY '\r\n'
jeśli użyjesz CSV z Windows. I wreszcie, ucieczka od nazw pól grawitami jest mądra, jeśli są spacje:$columns .= "`$column` varchar(250)";
jeśli masz możliwość zainstalowania phpadmina, jest sekcja importu, w której możesz importować pliki csv do bazy danych, jest nawet pole wyboru, aby ustawić nagłówek w pierwszej linii pliku zawierającej nazwy kolumn tabeli (jeśli jest odznaczone, pierwsza linia stanie się częścią danych
źródło
Najpierw utwórz tabelę w bazie danych z taką samą liczbą kolumn, jak w pliku csv.
Następnie użyj następującego zapytania
źródło
Aby załadować dane z pliku tekstowego lub pliku csv, poleceniem jest
W powyższym poleceniu w moim przypadku jest tylko jedna kolumna do załadowania, więc nie ma "zakończonych przez" i "zamkniętych przez", więc zostawiłem to puste, w przeciwnym razie programista może wprowadzić znak oddzielający. np. , (przecinek) lub „lub; lub cokolwiek innego.
** dla osób, które używają mysql w wersji 5 i nowszych **
Przed załadowaniem pliku do mysql należy upewnić się, że poniższe linie holownicze są dodane z boku
etc/mysql/my.cnf
aby edytować polecenie my.cnf to
sudo vi /etc/mysql/my.cnf
źródło
Jeśli uruchomisz mysql jako „mysql -u -p --local-infile”, będzie działać dobrze
źródło
Napisałem kod, aby to zrobić, wstawię kilka fragmentów:
Następnie pobierz nagłówki CSV, abyś mógł powiedzieć mysql, jak importować (uwaga: upewnij się, że kolumny mysql dokładnie odpowiadają kolumnom csv):
Następnie wyślij zapytanie do serwera mysql:
źródło
Zmagałem się z tym przez jakiś czas. Problem nie polega na tym, jak załadować dane, ale jak skonstruować tabelę do ich przechowywania. Przed zaimportowaniem danych należy wygenerować instrukcję DDL, aby zbudować tabelę.
Szczególnie trudne, jeśli tabela ma dużą liczbę kolumn.
Oto skrypt w Pythonie, który (prawie) wykonuje swoją pracę:
Problem, jaki pozostawia do rozwiązania, polega na tym, że ostateczna nazwa pola i deklaracja typu danych jest zakończona przecinkiem, a parser mySQL tego nie toleruje.
Oczywiście ma również problem z tym, że używa typu danych TEKST dla każdego pola. Jeśli tabela ma kilkaset kolumn, to VARCHAR (64) spowoduje, że tabela będzie za duża.
Wydaje się, że to również działa przy maksymalnej liczbie kolumn dla mySQL. Wtedy nadszedł czas, aby przenieść się do Hive lub HBase, jeśli możesz.
źródło
Oto jak zrobiłem to w Pythonie przy użyciu csv i łącznika MySQL :
Kluczowe punkty
'rb'
formacie binarnymskipinitialspace
opcja.255
nie jest wystarczająco szeroki, na INSERT pojawią się błędy i będziesz musiał zacząć od nowa.ALTER TABLE t MODIFY `Amount` DECIMAL(11,2);
ALTER TABLE t ADD `id` INT PRIMARY KEY AUTO_INCREMENT;
źródło
Importuj pliki CSV do tabeli mysql
wizyty: http://www.webslessons.com/2014/02/import-csv-files-using-php-and-mysql.html
źródło
Jak wspominali inni, lokalny plik ładowania danych działa dobrze. Wypróbowałem skrypt php, który opublikował Hawkee, ale nie zadziałał. Zamiast debugować, oto co zrobiłem:
1) skopiuj / wklej wiersz nagłówka pliku CSV do pliku txt i edytuj za pomocą emacsa. dodaj przecinek i CR między każdym polem, aby umieścić je we własnym wierszu.
2) Zapisz ten plik jako FieldList.txt
3) edytować plik zawierać defns dla każdego pola (większość była varchar, ale sporo było int (x). Dodaj create table nazwa_tabeli (do początku pliku i) do koniec pliku. Zapisz go jako CreateTable.sql
4) uruchom klienta mysql z danymi wejściowymi z pliku Createtable.sql, aby utworzyć tabelę
5) uruchom klienta mysql, skopiuj / wklej większość polecenia „LOAD DATA INFILE” zastępując moją tabelę name i nazwa pliku csv. Wklej w pliku FieldList.txt. Pamiętaj, aby dołączyć „IGNORUJ 1 LINIE” przed wklejeniem do listy pól
Brzmi jak dużo pracy, ale łatwo z emacsem .....
źródło
Użyj aplikacji TablePlus: Kliknij prawym przyciskiem myszy nazwę tabeli z prawego panelu Wybierz Importuj ...> Z CSV Wybierz plik CSV Przejrzyj dopasowanie kolumn i naciśnij Importuj Wszystko gotowe!
źródło
Mam wyszukiwarkę Google na wiele sposobów importowania csv do mysql, w tym „załaduj plik danych”, używam Środowiska pracy mysql itp.
kiedy używam przycisku importu mysql workbench, najpierw musisz samodzielnie stworzyć pustą tabelę, ustawić każdy typ kolumny samodzielnie. Uwaga: musisz dodać kolumnę ID na końcu jako klucz podstawowy, a nie null i auto_increment, w przeciwnym razie przycisk importu nie będzie widoczny później. Jednak kiedy zaczynam ładować plik CSV, nic nie jest ładowane, wygląda na to, że jest to błąd. Poddaję się.
Na szczęście najlepszym sposobem, jaki do tej pory znalazłem, jest użycie mysql Oracle dla programu Excel. możesz go pobrać stąd mysql for excel
Oto, co zamierzasz zrobić: otwórz plik csv w programie Excel, na karcie Dane, znajdź przycisk mysql dla programu Excel
wybierz wszystkie dane, kliknij eksport do mysql. Uwaga, aby ustawić kolumnę ID jako klucz podstawowy.
po zakończeniu przejdź do Środowiska pracy mysql, aby zmienić tabelę, na przykład typ waluty powinien być dziesiętny (19,4) dla dużej ilości dziesiętnej (10,2) do regularnego użytku. inny typ pola może być ustawiony na varchar (255).
źródło