Jak zaimportować plik CSV do Środowiska pracy MySQL?

88

Mam plik CSV. Zawiera 1,4 miliona wierszy danych, więc nie mogę otworzyć tego pliku csv w programie Excel, ponieważ jego limit wynosi około 1 miliona wierszy.

Dlatego chcę zaimportować ten plik do środowiska roboczego MySQL. Ten plik CSV zawiera kolumny takie jak

"Service Area Code","Phone Numbers","Preferences","Opstype","Phone Type"

Próbuję utworzyć tabelę w środowisku roboczym MySQL o nazwie „dummy” zawierającej kolumny takie jak

ServiceAreaCodes,PhoneNumbers,Preferences,Opstyp,PhoneTyp. 

Plik CSV nosi nazwę model.csv. Mój kod w środowisku roboczym wygląda tak:

LOAD DATA LOCAL INFILE 'model.csv' INTO TABLE test.dummy FIELDS TERMINATED BY ',' lines terminated by '\n';

ale pojawia się błąd podobny do model.CSV file not found

vps
źródło
Możesz to również zrobić w kreatorze importu dbForge Studio for MySQL . Automatycznie generuje tabelę w ten sposób prnt.sc/e5iqy1
Devart

Odpowiedzi:

139

Myślę, że brakuje ci klauzuli ENCLOSED BY

LOAD DATA LOCAL INFILE '/path/to/your/csv/file/model.csv'
INTO TABLE test.dummy FIELDS TERMINATED BY ','
ENCLOSED BY '"' LINES TERMINATED BY '\n';

I podaj pełną ścieżkę do pliku csv

Load Data Infile - dokumentacja MySQL

Packet Tracer
źródło
1
dziękuję, nie otrzymuję żadnego błędu w tym poleceniu, ale pojawia się błąd, taki jak nie znaleziono pliku model.csv. ten plik jest przechowywany na moim pulpicie systemowym
vps,
csv jest przechowywany na moim pulpicie systemowym
vps,
5
AKTUALIZACJA: Jeśli importujesz ciągi znaków z niestandardowymi znakami, warto zwrócić uwagę na konieczność użycia „CHARACTER SET utf8” w instrukcji: LOAD DATA LOCAL INFILE '/path/to/file.csv' INTO TABLE nazwa_bazy.nazwa_tabeli ZESTAW ZNAKÓW utf8 FIELDS TERMINATED BY ',' ENCLOSED BY '"' linie zakończone przez '\ n'; Docelowa tabela / kolumny również powinny być ustawione na utf-8
ılǝ
1
nie należy również zapominać o słowie kluczowym LOCAL, twoje zapytanie jest w sam raz
Brij Raj Singh - MSFT
2
Pracowałem "trochę" na Windows 7 używając MySQL Workbench 6.2. Musiałem użyć podwójnych ukośników '//path//to//your//csv//file//model.csv'i wszystkie pola zawierające pojedyncze ukośniki pękały.
576i
69

Jeśli masz mniejszy zestaw danych, sposobem na osiągnięcie tego przez GUI jest:

  1. Otwórz okno zapytania
  2. SELECT * FROM [table_name]
  3. Wybierz Importuj z paska menu
  4. Naciśnij Zastosuj w prawym dolnym rogu poniżej siatki wyników

wprowadź opis obrazu tutaj

Źródła: http://www.youtube.com/watch?v=tnhJa_zYNVY

Gabriel Chung
źródło
13
Tylko UWAGA. Ta opcja importu jest dostępna tylko na komputerach z systemem Windows. Wtyczki najwyraźniej nadal są oparte na .Net, więc nie działają na Linuksie ani na Macu.
BrianC,
8
Nie zapomnij nacisnąć Zastosuj po zaimportowaniu.
Steve Pitchers
7
Uważaj, to może być bardzo powolne. Wykonanie 25 000 rzędów zajęło kilka godzin
Rob Sedgwick
2
Wydaje się, że długość czasu jest bardzo zależna od sprzętu. Mój komputer w domu całkowicie się zakrztusił przy 10 tys. Mój komputer roboczy właśnie zaimportował 243 tys. Wierszy z około 200 kolumnami w 85 sekund.
KathyA.
2
@BrianC Wydaje się, że to już nie ma miejsca, pojawia się dla mnie w wersji dla Linuksa.
Jammerx2
21

W nawigatorze pod SCHEMATAMI kliknij prawym przyciskiem myszy schemat / bazę danych i wybierz „Kreator importu danych tabeli”

Działa również na Maca.

DannyPadilla
źródło
To zadziałało dla mnie na Ubuntu 18.04 podczas tworzenia nowej tabeli z csv. Jednak nie mogłem dodać danych do istniejącej tabeli przy użyciu tej metody.
LP Whigley,
2

Możesz użyć Kreatora importu danych tabeli MySQL

Shyju M
źródło
Dzięki :) to rozwiązało mój problem. możemy zmienić nazwę kolumny później z interfejsu użytkownika (nie dla ekspertów), gdy zostanie zaimportowana ...
vipul kumawat
próbowałem wielu rzeczy, które nie działały, ale w końcu się udało. działało nawet bez ingerowania w lokalne ustawienia pliku danych. Domyślam się, że MySQL zamiast tego uruchamia wstawki.
Peppershaker
1

W tej chwili nie jest możliwe zaimportowanie pliku CSV (przy użyciu MySQL Workbench) na wszystkich platformach, ani nie jest zalecane, jeśli wspomniany plik nie znajduje się na tym samym hoście co serwer MySQL.

Możesz jednak użyć mysqlimport .

Przykład:

mysqlimport --local --compress --user=username --password --host=hostname \
--fields-terminated-by=',' Acme sales.part_*

W tym przykładzie mysqlimportpoinstruowano, aby załadować wszystkie pliki o nazwie „sprzedaż” z rozszerzeniem rozpoczynającym się od „część_”. Jest to wygodny sposób załadowania wszystkich plików utworzonych w przykładzie „podzielenia”. Użyj opcji --compress, aby zminimalizować ruch w sieci. Opcja --fields-terminated-by = ',' jest używana dla plików CSV, a opcja --local określa, że ​​przychodzące dane znajdują się na kliencie. Bez opcji --local MySQL będzie szukał danych na hoście bazy danych, więc zawsze określaj opcję --local.

Przydatne informacje na ten temat można znaleźć w dokumentacji AWS RDS .

Panagiotis Moustafellos
źródło
0

Jeśli serwer znajduje się na komputerze zdalnym, upewnij się, że plik znajduje się na komputerze zdalnym, a nie na komputerze lokalnym.

Jeśli plik znajduje się na tej samej maszynie, na której znajduje się serwer mysql, upewnij się, że użytkownik mysql ma uprawnienia do odczytu / zapisu pliku lub skopiuj plik do katalogu schematu mysql:

W moim przypadku w ubuntu było to: /var/lib/mysql/db_myschema/myfile.csv

Również nie w odniesieniu do tego problemu, ale jeśli masz problemy z nowymi liniami, użyj sublimeTEXT, aby zmienić zakończenia linii na format WINDOWS, zapisz plik i spróbuj ponownie.

Eduardo Chongkan
źródło
0

Wydaje się to trochę trudne, ponieważ naprawdę przeszkadzało mi to przez długi czas.

Wystarczy, że otworzysz tabelę (kliknij prawym przyciskiem myszy „Wybierz wiersze - Limit 10000”), a otworzysz nowe okno. W nowym oknie znajdziesz „ikonę importu”.

Chen
źródło