Importuję niektóre dane 20000 wierszy z pliku CSV do MySQL.
Kolumny w CSV są w innej kolejności niż kolumny tabeli MySQL. Jak automatycznie przypisać kolumny odpowiadające kolumnom tabeli MySQL?
Kiedy wykonuję
LOAD DATA INFILE'abc.csv' INTO TABLE abc
to zapytanie dodaje wszystkie dane do pierwszej kolumny.
Proszę zasugerować automatyczną składnię importu danych do MySQL.
mysql
csv
import
load-data-infile
MANJEET
źródło
źródło
Odpowiedzi:
Możesz użyć polecenia LOAD DATA INFILE, aby zaimportować plik csv do tabeli.
Sprawdź ten link MySQL - LOAD DATA INFILE .
Dla użytkowników MySQL 8.0:
Użycie
LOCAL
słowa kluczowego utrzymuje zagrożenia bezpieczeństwa, a od MySQL 8.0 funkcjaLOCAL
jestFalse
domyślnie ustawiona na . Możesz zobaczyć błąd:Możesz go zastąpić, postępując zgodnie z instrukcjami w dokumentach . Pamiętaj, że takie nadpisanie nie rozwiązuje problemu z bezpieczeństwem, a raczej potwierdza, że jesteś świadomy i chcesz podjąć ryzyko.
źródło
IGNORE 1 LINES
dokładnie tutaj robi? Z góry dziękuję.Prawdopodobnie musisz ustawić
FIELDS TERMINATED BY ','
separator lub cokolwiek to jest.W przypadku pliku CSV wyciąg powinien wyglądać następująco:
źródło
Przed zaimportowaniem pliku musisz przygotować:
Załóżmy, że mamy następującą tabelę:
UTWÓRZ TABELĘ NA PODSTAWIE PONIŻSZEGO PYTANIA:
Jeśli wszystko jest w porządku .. Wykonaj następujące zapytanie, aby wczytać dane z pliku CSV:
Jeśli wszystko się stało. pomyślnie wyeksportowałeś dane z CSV do tabeli
źródło
Składnia:
Zobacz ten przykład:
źródło
Wstaw zbiorczo ponad 7000000 rekordów w ciągu 1 minuty do bazy danych (superszybkie zapytanie z obliczeniami)
RRP i RRP_nl i RRP_bl nie są w csv, ale obliczamy to i wstawiamy tamto.
źródło
Jeśli korzystasz
LOAD DATA LOCAL INFILE
z powłoki systemu Windows i musisz użyćOPTIONALLY ENCLOSED BY '"'
, będziesz musiał zrobić coś takiego, aby poprawnie uciec przed znakami:źródło
załóżmy, że używasz xampp i phpmyadmin
masz nazwę pliku „ratings.txt” nazwę tabeli „oceny” i nazwę bazy danych „filmy”
jeśli twój xampp jest zainstalowany w "C: \ xampp \"
skopiuj plik „ratings.txt” do folderu „C: \ xampp \ mysql \ data \ movies”
Mam nadzieję, że pomoże ci to pominąć błąd, jeśli robisz to na hoście lokalnym
źródło
Możesz załadować dane z pliku CSV lub pliku tekstowego. Jeśli masz plik tekstowy z rekordami z tabeli, możesz załadować te rekordy w tabeli. Na przykład, jeśli masz plik tekstowy, w którym każdy wiersz jest rekordem z wartościami dla każdej kolumny, możesz w ten sposób załadować rekordy.
table.sql
table.txt
- przykład w systemie Windows
źródło
Otrzymuję kod błędu: 1290. Serwer MySQL działa z opcją --secure-file-priv, więc nie może wykonać tej instrukcji
To zadziałało dla mnie w systemie Windows 8.1 64-bitowym przy użyciu wampserver 3.0.6 64bit.
Edytowano plik my.ini z C: \ wamp64 \ bin \ mysql \ mysql5.7.14
Usuń wpis secure_file_priv c: \ wamp64 \ tmp \ (lub jakikolwiek katalog, który tu masz)
Zatrzymałem wszystko - wyjdź z wampa itp. - i ponownie uruchom wszystko; następnie umieść mój plik cvs w C: \ wamp64 \ bin \ mysql \ mysql5.7.14 \ data \ u242349266_recur (ostatni katalog to nazwa mojej bazy danych)
wykonano LOAD DATA INFILE „myfile.csv”
INTO TABLE alumnos
POLA ZAKOŃCZONE PRZEZ „,”
ZAŁĄCZONE PRZEZ „” ”
LINIE ZAKOŃCZONE PRZEZ „\ r \ n”
IGNORUJ 1 LINIE
... i VOILA !!!
źródło
Możesz spróbować wstawić w ten sposób:
źródło
Do tych dni (kończących się w 2019 r.) Wolę używać narzędzia takiego jak http://www.convertcsv.com/csv-to-sql.htm Mam wiele wierszy, w których można uruchamiać podzielone na partycje bloki, zapisując błędy użytkowników, gdy pochodzą z csv arkusz kalkulacyjny użytkownika końcowego.
źródło