mysql - precio - pricing amazon rds
¿Cómo ''cargar datos'' en Amazon RDS? (5)
La importación de datos a granel en Amazon MySQL RDS es posible de dos maneras. Puede elegir cualquiera de abajo según su conveniencia.
Usando la utilidad de importación.
mysqlimport --local --compress -u <user-name> -p<password> -h <host-address> <database-name> --fields-terminated-by='','' TEST_TABLE.csv --Make sure, here the utility will be inserting the data into TEST_TABLE only.
Enviar un SQL de inserción masiva ingresando en el comando mysql.
mysql -u <user-name> -p<password> -h <host-address> <database-name> < TEST_TABLE_INSERT.SQL --Here file TEST_TABLE_INSERT.SQL will have bulk import sql statement like below --insert into TEST_TABLE values(''1'',''test1'',''2017-09-08''),(''2'',''test2'',''2017-09-08''),(''3'',''test3'',''2017-09-08''),(''3'',''test3'',''2017-09-08'');
No estoy seguro de si esta es una pregunta más adecuada para serverfault pero he estado jugando con Amazon RDS últimamente y estaba teniendo problemas para obtener privilegios de ''archivo'' para mi usuario de host web mysql.
Supongo que un simple:
grant file on *.* to ''webuser@''%'';
funcionaría pero no funciona y no puedo hacerlo con mi usuario ''root'' también. ¿Lo que da? La razón por la que usamos datos de carga es porque es superrápida para hacer miles de insertos a la vez.
Alguien sabe cómo remediar esto o necesito encontrar una manera diferente?
Esta página, http://docs.amazonwebservices.com/AmazonRDS/latest/DeveloperGuide/index.html?Concepts.DBInstance.html parece sugerir que necesito encontrar una forma diferente de evitar esto.
¿Ayuda?
ACTUALIZAR No estoy tratando de importar una base de datos; solo quiero usar la opción de carga de archivos para insertar varios cientos de miles de filas a la vez.
después de investigar esto es lo que tenemos:
mysql> grant file on *.* to ''devuser''@''%'';
ERROR 1045 (28000): Access denied for user ''root''@''%'' (using password: YES)
mysql> select User, File_priv, Grant_priv, Super_priv from mysql.user;
+----------+-----------+------------+------------+
| User | File_priv | Grant_priv | Super_priv |
+----------+-----------+------------+------------+
| rdsadmin | Y | Y | Y |
| root | N | Y | N |
| devuser | N | N | N |
+----------+-----------+------------+------------+
Me encontré con problemas similares. De hecho, estaba tratando de importar una base de datos, pero las condiciones deberían ser las mismas: necesitaba usar datos de carga debido al tamaño de algunas tablas, una conexión irregular y el deseo de una funcionalidad de reanudación modesta.
Estoy de acuerdo con Chris Finne en que no especificar la opción local puede conducir a ese error. Después de muchos accesos y arranques, descubrí que la herramienta de restauración paralela mk de Maatkit proporcionaba lo que necesitaba con excelentes características adicionales. Puede ser una gran coincidencia para su caso de uso.
Para lo que sea que valga la pena ... Puede agregar el operando LOCAL a LOAD DATA INFILE en lugar de usar mysqlimport
para evitar este problema.
LOAD DATA LOCAL INFILE ...
Esto funcionará sin otorgar permisos FILE.
Seguro que no puedes hacerlo todavía, ya que no tienes los privilegios de nivel más alto MySQL con RDS. Solo hemos realizado algunas pruebas, pero la forma más sencilla de importar una base de datos parece ser canalizarlo desde el cuadro fuente, por ejemplo
mysqldump MYDB | mysql -h rds-amazon-blah.com --user=youruser --pass=thepass
LOAD DATA LOCAL INFILE
usar LOAD DATA LOCAL INFILE
ya que el archivo no está en el servidor MySQL, pero está en el equipo desde el que está ejecutando el comando.
Según el comentario a continuación, es posible que también deba incluir la bandera:
--local-infile=1