No entiendo las respuestas que otros han proporcionado a preguntas similares, excepto las más obvias, como la siguiente:
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)Con esto quiero decir que se proporcionó el código exacto. Agradecería mucho que alguien pudiera explicarme, paso a paso, lo que debo hacer para habilitar los datos locales en el lado del "cliente" y el lado del "servidor". Parece que he habilitado los datos locales en el lado del cliente, pero no sé qué instrucciones debo darle a mi computadora para habilitar el "lado del servidor". No soy un experto en tecnología en absoluto, y solo quiero poder llegar al punto en el que los datos se cargaron en MySQL Workbench.
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) ;Solo quiero poder importar un archivo .csv a MySQL usando el shell de la línea de comandos.
Si la capacidad LOCAL está deshabilitada, ya sea en el servidor o en el lado del cliente, un cliente que intente emitir una instrucción LOAD DATA LOCAL recibirá el siguiente mensaje de error:
ERROR 3950 (42000): Loading local data is disabled; this must be enabled on both the client and server sideEncontré el mismo problema cuando quiero cargar el archivo de texto pet.txt en la tabla de mascotas siguiendo un tutorial de Mysql: https://dev.mysql.com/doc/refman/8.0/en/loading-tables.html
Después de buscar en línea, lo arreglé siguiendo estos pasos:
mysql> SET GLOBAL local_infile=1; Query OK, 0 rows affected (0.00 sec) mysql> quit Bye mysql --local-infile=1 -u root -p1Esta variable controla la capacidad LOCAL del lado del servidor para declaraciones LOAD DATA. Según la configuración de local_infile, el servidor rechaza o permite la carga de datos locales por parte de clientes que tienen LOCAL habilitado en el lado del cliente. Para hacer que el servidor rechace o permita explícitamente las sentencias LOAD DATA LOCAL (independientemente de cómo se configuren los programas cliente y las bibliotecas en tiempo de compilación o tiempo de ejecución), inicie mysqld con local_infile deshabilitado o habilitado, respectivamente. local_infile también se puede establecer en tiempo de ejecución.
mysql> use menagerie Database changed mysql> load data local infile '/path/pet.txt' into table pet; Query OK, 8 rows affected, 7 warnings (0.00 sec)¿Funciona?
Referencias:
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
Para la instalación predeterminada de MySQL 8.0.20:
i) Busque el archivo de inicialización ubicado en C:\ProgramData\MySQL\MySQL Server 8.0\my.ini.
ii) Abra el archivo my.ini con el bloc de notas.
iii) Busque los encabezados [cliente], [mysql] en la sección CLIENTE y [mysqld] en la sección SERVIDOR.
iv) Agregue la siguiente declaración debajo de cada encabezado:
local_infile=ACTIVADO
v) Guarde el archivo y reinicie el servicio MySQL80 en los servicios locales de Windows.
Deberia de funcionar.
Esto es lo que tuve que hacer para solucionar este problema en Ubuntu 20.04/MySQL 8:
nano /etc/mysql/mysql.conf.d/mysqld.cnf[mysqld] agregue esta línea: local_infile = 1 [client] local_infile = 1SET GLOBAL local_infile=1; NOTA: revisó lo anterior para incluir un paso adicional para asegurarse de que local_infile=1 se agregue a la sección [mysqld] . Esto me ahorra tener que ejecutar SET GLOBAL local_infile=1; después de cada reinicio.
Puede verificar que local_infile esté deshabilitado o habilitado. Entonces, intenta esto-
mysql> show global variables like 'local_infile';si muestra-
+---------------+-------+ | Variable_name | Value | +---------------+-------+ | local_infile | OFF | +---------------+-------+ (this means local_infile is disable)luego habilite con esto-
mysql> set global local_infile=true;Luego verifique nuevamente y salga del servidor mysql con esto:
mysql> exitAhora debe conectarse/iniciar sesión en el servidor con local_infile . Para esto, ejecute este código desde la línea de comando del terminal :
mysql --local_infile=1 -u root -ppassword DB_nameahora cargue los datos del archivo local-
mysql> load data local infile 'path/file_name.extention' into table table_name;Es trabajo en mi pc. puedes probar esto. Gracias.
Después de probar todos los pasos descritos anteriormente, seguía recibiendo el código de error: 2068. Solicitud de archivo LOAD DATA LOCAL INFILE rechazada debido a restricciones de acceso. La solución fue eliminar la palabra "LOCAL" en la sentencia SQL:
cargar archivo de datos...
Para aquellos que están atascados en el paso 3:
mysql --local-infile=1 -u raíz -p1
como yo estaba, esto es lo que hice:
cd "C:\Archivos de programa\MySQL\MySQL Server 8.0\bin"
en el símbolo del sistema.
mysql --local_infile=1 -u raíz -pABC colección de fieras
donde ABC es su contraseña para MySQL y menagerie es la base de datos en la que está trabajando (reemplace ABC y menagerie con cualquiera que sea su contraseña y el nombre de la base de datos, respectivamente)
mysql> usar colección de animales
Base de datos cambiada
mysql> cargar datos en el archivo local '/ruta/mascota.txt' en la tabla mascota;
Consulta OK, 8 filas afectadas, 7 advertencias (0.00 seg)
y debería funcionar...
Escriba el siguiente comando en la terminal:
SHOW GLOBAL VARIABLES LIKE 'local_infile'; Si es 0 oe false , escriba el siguiente comando:
SET GLOBAL local_infile = TRUE;en Ubuntu 20.04 / MySQL 8: este enfoque resolvió el problema para mí: