Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

268
Vistas
Usar archivo csv para mysql

Intento insertar algunas líneas del archivo csv a la base de datos MySQL "elevage" por línea de comando. El archivo se llama "animal.csv". A continuación se muestra mi solicitud:

 `mysql> LOAD DATA LOCAL INFILE 'F:/MYSQL/animal.csv' -> INTO TABLE Animal -> FIELDS TERMINATED BY ';' ENCLOSED BY '"' -> LINES TERMINATED BY '\r\n' -> (espece, sexe, date_naissance, nom, commentaires);

y me encuentro con este mensaje de error

 `ERROR 3948 (42000): Loading local data is disabled; this must be enabled on both the client and server sides`.

Entonces he usado el siguiente código:

 `SHOW GLOBAL VARIABLES LIKE 'local_infile'`;

y encontré: local_file estaba "APAGADO". Luego traté de configurarlo en "ON" usando el siguiente código:

 `SET GLOBAL local_infile=1;`

Desafortunadamente, me encuentro con otro mensaje de error:

 `ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER or SYSTEM_VARIABLES_ADMIN privilege(s) for this operation`

Aunque, cuando reviso las subvenciones del usuario "estudiante" en el que estoy trabajando:

 mysql> SHOW GRANTS FOR CURRENT_USER();

Yo obtengo:

 +--------------------------------------------------------------+ | Grants for student@localhost | +--------------------------------------------------------------+ | GRANT USAGE ON *.* TO `student`@`localhost` | | GRANT ALL PRIVILEGES ON `elevage`.* TO `student`@`localhost` | +--------------------------------------------------------------+ 2 rows in set (0.00 sec)

lo que significa que "estudiante" tiene todos los privilegios en la base de datos "elevage".

Por favor aconséjame.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

El privilegio SYSTEM_VARIABLES_ADMIN (así como el privilegio SUPER obsoleto) no es un privilegio por base de datos, sino un privilegio por servidor. Y es un privilegio de los administradores, no un privilegio de los usuarios.

¿Por qué necesita tales privilegios para usar LOAD DATA ? Porque ese comando requiere que su usuario escriba archivos directamente en el espacio de archivos de la máquina del servidor de la base de datos. Por lo tanto, el servidor de la base de datos debe confiar completamente en los usuarios de ese comando.

Para usar LOAD DATA LOCAL , necesitará que un administrador del servidor le otorgue esos privilegios, con algo como esto:

 GRANT SUPER, SYSTEM_VARIABLES_ADMIN ON *.* TO 'student'@'localhost';

Si se trata de un servidor compartido, parece poco probable que su administrador le conceda este privilegio. Si es su propio servidor, usted es el administrador y puede usar su cuenta raíz para otorgar el privilegio a su cuenta de estudiante, o usar la cuenta raíz directamente para ejecutar su comando LOAD DATA .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda