Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Manipulació de CSV mediante sentencias SQL (https://www.clubdelphi.com/foros/showthread.php?t=57524)

yusnerqui 18-06-2008 19:46:11

Manipulació de CSV mediante sentencias SQL
 
Un saludo a todos los amigos de este foro:)

Tengo una fichero CSV y necesito hacer un grupo de gestiones a su contenido para lo cual sería ideal que pudiera usar sentencias sql sobre el.

investigando me enteré que en MySQL existe la sentencia LOAD DATA INFILE que importa el csv para ese gestor, pero lo que necesito hacer no puede inmiscuir un servidor de bases de datos.

Pensé en utilizar access, pero no encuentro el homólogo de LOAD DATA INFILE para este gestor y no puedo utilizar el asistente de access porque debe ser todo automatizado y asequible al usuario final.

Mi pregunta es: Existe alguna forma de importar un csv para access desde sentencias SQL?, o en su defecto existe alguna manera de tratar los csv como tablas de una base de datos permitiendo hacer gestiones sobre ellos.

Agradeciendo la atención los saluda

Yusnerqui

poliburro 18-06-2008 20:33:03

ADO puede servirte para eso amigo.

Código Delphi [-]
 
Ado.ConnectionString := 
'Driver={Microsoft Text Driver (*.txt;*.csv)};DefaultDir= Directorio';
 
//Ligas El Ado query al connection
 
AdoQuery.Sql.Text := 'Select * FROM file.csv';
 
AdoQuery.Open

Esa es la manera de hacerlo

yusnerqui 18-06-2008 21:02:24

Muchas gracias por responder, al parecer entonces es que mi archivo tiene algun problema, pues yo incluso hice un alias con ese driver y cuando ejecuto la consulta sql me dice que no se puede actualizar el archivo datos.csv(mi archivo) porque es de solo lectura, eso me dejó un poco perplejo, de todos modos lo voy a probar poniendo lo que me dices aunque dudo que el resultado sea otro. de cualquier manera te reitero mi agradecimiento por la rápida respuesta y luego te cuento.

Saludos

yusnerqui 18-06-2008 21:16:37

Hola de nuevo, me dice que no se encontró el nombre de origen de los datos y que no se especifico un controlador determinado, mi codigo es el que me pusistes:

Código Delphi [-]
Var Dir:String;
begin
   Dir:= ExtractFileDir(ParamStr(0));
   ADOConnection1.ConnectionString :=
'Driver={Microsoft Text Driver (*.txt;*.csv)};DefaultDir= '+Dir;
   ADOConnection1.Open;
//Ligas El Ado query al connection

  AdoQuery1.Sql.Text := 'Select * FROM datos.csv';

poliburro 19-06-2008 04:17:57

Crea primero el dsn y una vez que lo hayas creado lo utilizas en ADO.

Saludos

Delfino 19-06-2008 13:22:08

Puedes utilizar el TClientDataset o el TJvCsvDataset y servirte de la propiedad Filter q tienen todos los derivados del TDataset..

yusnerqui 19-06-2008 19:53:06

Cita:

Empezado por poliburro
Crea primero el dsn y una vez que lo hayas creado lo utilizas en ADO.

eso precisamente fue lo primero que intenté, incluso le configuré el caracter por el que está separado mi archivo y le dije que la primera fila era los encabezados de columnas, y teoricamente eso debía trabajar, pero paradójicamente me da el error que mencioné en mi segundo mensaje

Cita:

Empezado por yusnerqui
...pues yo incluso hice un alias con ese driver y cuando ejecuto la consulta sql me dice que no se puede actualizar el archivo datos.csv(mi archivo) porque es de solo lectura...

A lo qie yo le llamo alias es el DSN, realmente me tiene un poco desconsertado, pero bueno al menos veo que el procedimiento que utilizi es el correcto, voy a revizar con calma la estructura del archivo puesto quen o soy yo quien lo crea, sino que me llega de un tercero y debo manipularlo.

De todos modos muchas gracias y luego les cuento.

Un Abrazo

luisgutierrezb 19-06-2008 20:57:36

y realmente el archivo es de solo lectura? no tiene el atributo de archivo de readonly??


La franja horaria es GMT +2. Ahora son las 17:23:52.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi