Nie rozumiem odpowiedzi udzielonych przez innych na podobne pytania, z wyjątkiem najbardziej oczywistych, takich jak poniższe:
mysql> SET GLOBAL local_infile=1;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW GLOBAL VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | ON |
+---------------+-------+
1 row in set (0.01 sec)
Rozumiem przez to, że podano dokładny kod. Byłbym bardzo wdzięczny, gdyby ktoś krok po kroku przeprowadził mnie przez to, co muszę zrobić, aby włączyć lokalne dane po stronie „klienta” i „serwera”. Wygląda na to, że włączyłem lokalne dane po stronie klienta, ale nie wiem, jakie instrukcje muszę przekazać komputerowi, aby włączyć „po stronie serwera”. Nie jestem wcale obeznany z technologią i chcę po prostu przejść do punktu, w którym dane zostały przesłane do środowiska roboczego MySQL.
ERROR 3948 (42000): Loading local data is disabled; this must be enabled on both the client and server sides
CREATE TABLE toys (
uniq_id VARCHAR(1000),
product_name VARCHAR(1000),
manufacturer VARCHAR(1000),
price VARCHAR(1000),
number_available_in_stock VARCHAR (1000),
number_of_reviews INT,
number_of_answered_questions INT,
average_review_rating VARCHAR(1000),
amazon_category_and_sub_category VARCHAR(1000),
customers_who_bought_this_item_also_bought VARCHAR(1000),
description VARCHAR(1000),
product_information VARCHAR(1000),
product_description VARCHAR(1000),
items_customers_buy_after_viewing_this_item VARCHAR(1000),
customer_questions_and_answers VARCHAR(1000),
customer_reviews VARCHAR(1000),
sellers VARCHAR(1000)
);
LOAD DATA LOCAL INFILE ‘/Users/BruddaDave/Desktop/amazonsample.csv’ INTO TABLE toys
FIELDS TERMINATED BY ‘,’
LINES TERMINATED BY ‘\n’
IGNORE 1 LINES
(uniq_id, product_name, manufacturer, price, number_available_in_stock, number_of_reviews, number_of_answered_questions, average_review_rating, amazon_category_and_sub_category, customers_who_bought_this_item_also_bought, description, product_information, product_description, items_customers_buy_after_viewing_this_item, customer_questions_and_answers, customer_reviews, sellers)
;
Chcę tylko móc zaimportować plik .csv do MySQL przy użyciu powłoki wiersza polecenia.
Odpowiedzi:
Jeśli funkcja LOCAL jest wyłączona, po stronie serwera lub klienta, klient, który próbuje wydać instrukcję LOAD DATA LOCAL, otrzymuje następujący komunikat o błędzie:
Ten sam problem napotkałem, gdy chcę załadować plik tekstowy pet.txt do tabeli zwierząt domowych po samouczku Mysql: https://dev.mysql.com/doc/refman/8.0/en/loading-tables.html
Po przeszukaniu online naprawiłem to, wykonując następujące czynności:
Ta zmienna steruje LOKALNĄ stroną serwera dla instrukcji LOAD DATA. W zależności od ustawienia local_infile serwer odrzuca lub zezwala na ładowanie danych lokalnych przez klientów, którzy mają włączoną LOCAL po stronie klienta. Aby jawnie spowodować, że serwer odmówi lub zezwoli na instrukcję LOAD DATA LOCAL (niezależnie od tego, jak programy klienckie i biblioteki są konfigurowane w czasie kompilacji lub w czasie wykonywania), uruchom mysqld z odpowiednio wyłączonym lub włączonym plikiem lokalnym. local_infile można również ustawić w czasie wykonywania.
Czy to działa?
Bibliografia:
https://dev.mysql.com/doc/refman/8.0/en/load-data-local-security.html https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options .html # option_cmake_enabled_local_infile https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_local_infile
źródło
my.cnf
plik:Z oficjalnej dokumentacji MySQL 8.0 .
źródło
/etc/mysql/mysql.conf.d/mysqld.cnf
i dodałem local_infile = 1 pod [mysqld] i teraz działa! Nie mogę obecnie edytować tej odpowiedzi, ponieważ kolejka edycji jest pełna, ale jest niekompletna bez pary mysqld.