PDA

Ver la Versión Completa : Como subir datos a travé de una sentencia SQL.


Ariqueño
13-02-2021, 15:17:48
buenos días ..
hace mucho tiempo que no volvía al club por estar alejado a la programación (no pude ingresar a mi antigua cuenta).. Estoy realizando una pequeña aplicación que necesito de su ayuda. Utilizo delphi 10.2, Zeoslib 7.2.4-stable y mysql 5.5.24, el problema es el sgte:
cargo desde un archivo CSV a la tabla correspondiente:

DM.miSQL.Close;
DM.miSQL.SQL.Clear;
DM.miSQL.SQL.Add('LOAD DATA INFILE :P1');
DM.miSQL.SQL.Add('INTO TABLE temporal_stock');
DM.miSQL.SQL.Add('FIELDS TERMINATED BY ";"');
DM.miSQL.SQL.Add('LINES TERMINATED BY "\r\n"');
DM.miSQL.ParamByName('P1').Value := edit1.Text; // esto contiene edit1 "C:/DSM/DSMprecio/libros/STOCK05-01-2021.csv"
DM.miSQL.ExecSQL;


y me arroja el sgte error:
SQL Error: File 'C:/DSM/DSMprecio/libros/STOCK05-01-2021.csv
' not found (Errcode:22)

Ahora si esta sentencia SQL lo cargo en tiempo de diseño en la Zquery:


LOAD DATA INFILE 'C:/DSM/DSMprecio/libros/STOCK05-01-2021.csv'
INTO TABLE temporal_stock
FIELDS TERMINATED BY ";"
LINES TERMINATED BY "\r\n"


corre sin problemas..
he hecho de todo para ver cual es mi problema y nada...
desde ya gracias.

Casimiro Notevi
13-02-2021, 18:08:51
Pregunto: ¿no serán las barras al revés, al ser windows?
C:\DSM\DSMprecio\libros\STOCK05-01-2021.csv

Ariqueño
13-02-2021, 18:57:33
Pregunto: ¿no serán las barras al revés, al ser windows?

lo cargo tal cual en el componente zquery.. y corre bien..
ahora lo cambio como dices
C:\DSM\DSMprecio\libros\STOCK05-01-2021.csv
y envía el sgte error:

SQL Error File:
'c:\wamp\bin\mysql5.5.24\data\DSMDSMpreciolibrosStock05-01-2021.csv' not found (ErrCode:2)


no se por donde encontrar la solución.
y gracias por ayudar.

inclusive envio por consola de mysql

mysql> LOAD DATA INFILE 'C:\DSM\DSMprecio\libros\STOCK05-01-2021.csv'
-> INTO TABLE temporal_stock
-> FIELDS TERMINATED BY ";"
-> LINES TERMINATED BY "\r\n";
ERROR 29 (HY000): File 'c:\wamp\bin\mysql\mysql5.5.24\data\DSMDSMpreciolibrosSTOCK05-01-2021.csv' not found (Errcode: 2)

Casimiro Notevi
13-02-2021, 19:05:55
Si en ambos casos dice que no encuentra el .CSV es que no existe ahí o que no tiene permisos para leerlo ahí.

mamcx
13-02-2021, 20:12:29
Yo no uso mysql, pero a mi me parece que es porque usas un parámetro en vez de directamente la ruta del archivo (no me sorprende que de la casualidad que esto no se pueda en este caso concreto en mysql).

Al usar el parámetros NO están haciendo idéntico a como lo haces en la GUI de la bd.

Ariqueño
13-02-2021, 20:45:43
Yo no uso mysql, pero a mi me parece que es porque usas un parámetro en vez de directamente la ruta del archivo (no me sorprende que de la casualidad que esto no se pueda en este caso concreto en mysql).

Al usar el parámetros NO están haciendo idéntico a como lo haces en la GUI de la bd.

y por donde va la mano...digo para orientarme...pensé que era una cosa de permisos veo que no es asi..

mamcx
13-02-2021, 21:19:47
Pasa la ruta concatenando directo, sin usar parámetros.

Ariqueño
20-02-2021, 18:36:21
hola...
ya encontré el problema pero no se como solucionarlo..
utilizo un OpenDialog para ubicar el archivo en cuestión.. y vacío la ruta completa a un tedit y al vaciar la instrucción SQL al Zquery se produce un salto de línea, eso lo veo en un showMessage:

LOAD DATA INFILE
"C:/DSM/DSMprecio/libros/PRECIO18-02-2021.CSV
"
INTO TABLE temporal_stock
FIELDS TERMINATED BY ";"
LINES TERMINATED BY "\r\n"

y se produce el error que no se encuentra el archivo. pero si antes de dar ok la ejecución de este código me posiciono al final del Tedit y le doy 1 vez con la tecla backSpace no elimina el ultimo caracter y si le doy por segunda vez si lo hace, reintegro ese caracter eliminado y ejecuto la instruccion y funciona de maravilla....

parece una historia de brujas y duendes... pero asi es....que me hecha un cable..porfavor.

mamcx
20-02-2021, 19:10:47
Solo hay que darle trim al string antes de pasarlo al mysql:

http://www.delphibasics.co.uk/RTL.asp?Name=Trim

Ariqueño
20-02-2021, 20:25:26
[QUOTE=mamcx;540121]Solo hay que darle trim al string antes de pasarlo al mysql:



lo había hecho pero mágicamente funciono.... gracias por todo..