Soy un novato de MySQL que termina un pedazo de código central en mi aplicación web. El código importa un archivo CSV (localmente), que es generado y limpiado por FileMaker y lo deja.La mejor forma de capturar errores LOAD DATA LOCAL INFILE?
Dado que esto se irá a producción en algún momento cercano (y probablemente sea una base de datos menor a 500 mb), me gustaría saber si hay algún error en la comprobación/captura de posibles problemas en el futuro. o ser alertado de la configuración de mi servidor. He leído cosas sobre los registros temporales, etc. y mi administración de MySQL todavía no está preparada.
El código muy básico es:
$m = mysql_connect('localhost', 'mytable', 'mypassword');
$db = 'mydb';
mysql_select_db($db) or die("Import Error - Couldn't select database: " . mysql_error());
$sql = 'load data local infile "inventory.csv"
into table ibl_account_details_temp fields terminated by ","
optionally enclosed by "\""
lines terminated by "\r"
(store_id, SKU, account, item_number, brand, description, size, category, price, qty, fees)
';
echo mysql_query($sql) or die(myqsl_error());
PS EDIT: También me gustaría saber si este método de importación está abierto a la inyección de SQL?
No veo cómo podría haber ningún riesgo de inyección SQL de primer orden ejecutando 'LOAD DATA INFILE', ya que MySQL no está ejecutando el contenido del archivo CSV, solo lo analiza como CSV. Por supuesto, eso no dice nada sobre el riesgo de un ataque de segundo orden, pero siempre que cada consulta que tome entrada (incluida la entrada de un resultado de consulta) use la parametrización, debe estar seguro. Por esa razón (entre otras) debería usar mysqli o PDO para acceder a mysql en lugar de las funciones mysql_ *. –
Estaba usando una instrucción de inserción simple antes y fgetcsv se estaba quedando sin memoria en mi archivo de 18 mb. No pude resolverlo y estoy maximizado por el host a 128mb de RAM y necesito conseguir/mantener esto funcionando. Dicho esto, en cualquier otro lugar estoy usando PDO ;-) – SWL
Oh, claro, no me opongo al uso de 'LOAD DATA INFILE' para importar CSV, para eso sirve. –