LOAD DATA [LOCAL] INFILE 'file_name.txt' en tdolphin

LOAD DATA [LOCAL] INFILE 'file_name.txt' en tdolphin

Postby Leo » Tue Mar 26, 2013 1:07 am

Srs. del foro, necesito hacer un append from con mysql, pero el siguiente Query:

Code: Select all  Expand view
LOAD DATA [LOCAL] INFILE 'file_name.txt'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [FIELDS
        [TERMINATED BY '\t']
        [[OPTIONALLY] ENCLOSED BY '']
        [ESCAPED BY '\\' ]
    ]
    [LINES
        [STARTING BY '']    
        [TERMINATED BY '\n']
    ]
    [IGNORE number LINES]
    [(col_name,...)]


retorna el mensaje que "Este programa ha dejado de funcionar", qué ocurre?
Fivewin 12.04 + xHarbour 1.2.1 + BCC582

Nada como Fivewin, odio visual basic, visual studio y todas las porquerías visual.
Leo
 
Posts: 66
Joined: Thu Jan 03, 2013 6:13 pm

Re: LOAD DATA [LOCAL] INFILE 'file_name.txt' en tdolphin

Postby Daniel Garcia-Gil » Tue Mar 26, 2013 2:42 am

Hola

creo que el archivo debe estar alojado en la parte del servidor y no de forma local
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: LOAD DATA [LOCAL] INFILE 'file_name.txt' en tdolphin

Postby Ariel » Tue Mar 26, 2013 10:27 am

Leo,
Efectivamente como dice Daniel, el archivo de salida se genera en el servidor, seguramente no tendras acceso al mismo, la solucion que encontré fue crear una carpeta TEMPORAL, publica en el servidor y enviar ahi el archivo resultante y luego levantarlo desde cualquier terminal
Espero te sirva,
Salu2, Ariel.
Ariel
 
Posts: 374
Joined: Wed Nov 29, 2006 1:51 pm
Location: Rosario - Argentina

Re: LOAD DATA [LOCAL] INFILE 'file_name.txt' en tdolphin

Postby Leo » Tue Mar 26, 2013 6:04 pm

Cree una carpeta pública en mi servidor Ubuntu 12.04, y aún así persiste el error... estoy confundido, la aplicación debo ejecutarla desde la carpeta que tengo asignada a sistemas en mi servidor también?
Fivewin 12.04 + xHarbour 1.2.1 + BCC582

Nada como Fivewin, odio visual basic, visual studio y todas las porquerías visual.
Leo
 
Posts: 66
Joined: Thu Jan 03, 2013 6:13 pm

Re: LOAD DATA [LOCAL] INFILE 'file_name.txt' en tdolphin

Postby Ariel » Tue Mar 26, 2013 6:19 pm

Leo,
chequea q pusiste el path + tutxt
salu2, Ariel.
Ariel
 
Posts: 374
Joined: Wed Nov 29, 2006 1:51 pm
Location: Rosario - Argentina

Re: LOAD DATA [LOCAL] INFILE 'file_name.txt' en tdolphin

Postby Leo » Tue Mar 26, 2013 7:16 pm

El Path y el archivo son correctos, el programa lo carga correctamente, sólo que cuando termina me arroja el mensaje al intentar refrescar el xbrowse. ¿Será por que es un archivo plano con más de 250.000 registros?

Codigo Fuente:

Code: Select all  Expand view
//----------------------------------------------------------------------------//
Function Txt2MySQL(oDlg)
        LOCAL   aDBF := {"EMPLEADOS" }
      LOCAL   aHOJAS:= { "Hoja1" }
        Local   aHeaders:={},aCampos:={}
        Local   oQry
        Public  xValue:=0,Start_Row:=2,cXlsFile:="",o100,o102,_Mensaje:="",x,cDrive:=""

        Set Deleted On
       Set Date British
        Set Century on
       Set Epoch to 2000

        cXlsFile:=cGetFile("\PLAEST*.TXT", "Seleccione Archivo")
        If empty( cXlsFile )
            Return Nil
        Else
            cFile:=cXlsFile
            xValue:=Len(Alltrim(cFile))
      Endif
        cFile:=Substr(cFile,3,xValue)
Return cFile
*---------------------------------------------------------------------------------
Function QryExecute(oBrw,cFile)
Local oQry,cDrive
cDrive:=CurDrive()+":\"
oQry:=oConected:Query( "
LOAD DATA LOCAL INFILE '"+cDrive+Alltrim(cFile)+"' INTO TABLE sabana Columns TERMINATED BY '|' Ignore 1 lines" )
oBrw:Refresh()
Return Nil
//----------------------------------------------------------------------------//
Fivewin 12.04 + xHarbour 1.2.1 + BCC582

Nada como Fivewin, odio visual basic, visual studio y todas las porquerías visual.
Leo
 
Posts: 66
Joined: Thu Jan 03, 2013 6:13 pm

Re: LOAD DATA [LOCAL] INFILE 'file_name.txt' en tdolphin

Postby Adolfo » Wed Mar 27, 2013 1:59 pm

La solucion al problema es super facil

Local cFile:="c:\\traspaso.txt"

oSvr:Execute("LOAD DATA LOCAL INFILE '" + cFile + "' INTO TABLE xboss.enccambio FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n'")

Asumiendo que oSvr es el server de conexion de la tDolphin
Probado y funcionando al 100% en un server Fedora Core 16 y Centos, desde clientes Windows XP y Windows 7

NO OLVIDEN EL DOBLE \\ en las rutas que le pasan a MYSQL en LINUX
;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1650
User avatar
Adolfo
 
Posts: 846
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile

Re: LOAD DATA [LOCAL] INFILE 'file_name.txt' en tdolphin

Postby Daniel Garcia-Gil » Wed Mar 27, 2013 3:28 pm

Adolfo

Gracias, podrias aclararme si el archivo esta en local o remoto?
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: LOAD DATA [LOCAL] INFILE 'file_name.txt' en tdolphin

Postby Adolfo » Wed Mar 27, 2013 3:46 pm

Daniel....

Yo genero ingresos masivos de nuevos registros hacia un servidor remoto. Tiene una IP publica y yo solo accedo por el puerto 3306 al servidor LINUX que se encuentra en esa sucursal de la empresa.

Tengo en mi lan, otro servidor Linux. El principal de la casa matriz. El usuario genera un archivo de texto (usando la rutina oQry:Export( EXP_TEXT, "C:\TRASPASO" )) y genero mi archivo TXT que luego subire al servidor REMOTO.

por eso tengo declarado el archivo de traspaso asi
Local cFile:="c:\\traspaso.txt"
Como veras se encuentra en mi disco duro LOCAL, y le escribo las 2 \\

Creo mi conexion con tDolphin hacia el servidor remoto

CONNECT oSvrRem;
HOST "200.200.200.200" ;
USER "userxxxxx" ;
PASSWORD "passxxxxxx" ;
DATABASE "mibase"

y ejecuto mi carga.....

oSvrRem:Execute("LOAD DATA LOCAL INFILE '" + cFile + "' INTO TABLE mibase.mitabla FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n'")

Y acabo de enviar los datos.
Es muchismo mas rapido y eficiente que si copiara los datos uno a uno, ocupa menos ancho de banda, y va de maravilla.

Desde Chile
Adolfo
;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1650
User avatar
Adolfo
 
Posts: 846
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile

Re: LOAD DATA [LOCAL] INFILE 'file_name.txt' en tdolphin

Postby Leo » Wed Mar 27, 2013 8:59 pm

Adolfo, Daniel y Ariel, muchas gracias, nuevamente el foro es una instancia que puedo resolver problemas, el programa funciona excelente con servidor remoto y carga local y con carga desde el mismo servidor remoto. Genial, Gracias!
Fivewin 12.04 + xHarbour 1.2.1 + BCC582

Nada como Fivewin, odio visual basic, visual studio y todas las porquerías visual.
Leo
 
Posts: 66
Joined: Thu Jan 03, 2013 6:13 pm

Re: LOAD DATA [LOCAL] INFILE 'file_name.txt' en tdolphin

Postby sysctrl2 » Fri Mar 29, 2013 12:38 am

Daniel, Adolfo , colegas,

se puede hace un txt con datos de un DBF y despues pasarlo a mysql?

que estructura debe de tener el texto ?

esto haria mas facil la migracion de dbf a sql.

saludos..
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 951
Joined: Mon Feb 05, 2007 7:15 pm

Re: LOAD DATA [LOCAL] INFILE 'file_name.txt' en tdolphin

Postby Adolfo » Fri Mar 29, 2013 2:11 am

SysCtrl2

Es en definitiva un simple archivo CSV, separado por comas o punto y coma, enter al final de linea.
El lunes te publico un ejemplo completo.

Saludos
Desde Chile
Adolfo
;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1650
User avatar
Adolfo
 
Posts: 846
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile

Re: LOAD DATA [LOCAL] INFILE 'file_name.txt' en tdolphin

Postby sysctrl2 » Fri Mar 29, 2013 6:49 pm

perfecto Adolfo,
gracias.
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 951
Joined: Mon Feb 05, 2007 7:15 pm

Re: LOAD DATA [LOCAL] INFILE 'file_name.txt' en tdolphin

Postby Francisco Horta » Fri Apr 05, 2013 12:04 am

A mi me va bien asi:

LOAD DATA LOCAL INFILE 'p:/temp/day.csv' INTO TABLE arts COLUMNS TERMINATED BY ',' IGNORE 1 LINES

pero aqui debe haber un orden en el archivo a importar .csv y los campos de la tabla,

Aqui ahora me resulta una necesidad, a ver si Adolfo me puedes ayudar, tengo una tabla con 40 campos y un .csv con 4 campos y esos 4 campos del .csv son en mi tabla los campos de la posicion 1,3,23,28 como lo hago?

probe asi sin exito:

LOAD DATA INFILE 'p:/temp/valores.csv' INTO TABLE arts (id,nombre,costo,unitario) FIELDS TERMINATED BY ',' IGNORE 1 LINES

al definirle los campos (id,nombre,costo,unitario) la sentencia TERMINATED BY ',' hace que no funcione
algo estoy haciendo mal?

pero si lo hago asi:

LOAD DATA INFILE 'p:/temp/valores.csv' INTO TABLE arts (id,nombre,costo,unitario)
funciona pero me agrega todos los datos del .csv en la columna id

:(
Mi necesidad es espcificar los campos en los que se va a actualizar mi tabla y es una lata crear columnas vacias en excel para saber la posicion de cada campo..
gracias
saludos
____________________
Paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Re: LOAD DATA [LOCAL] INFILE 'file_name.txt' en tdolphin

Postby Adolfo » Fri Apr 05, 2013 11:52 am

Francisco.

Que version de MYSQL usas, si es anterior a la 5.0.3, deberas actualizarla.

En todo caso a mi me funciona con
LOAD DATA LOCAL INFILE '" + cFile + "' INTO TABLE mibase.mitabla FIELDS (campo1,campo2,campo3) TERMINATED BY ';' LINES TERMINATED BY '\r\n

Siempre y cuando exista completa correspondencia entre el TXT y los campos aludidos. Con enter al final de la linea. Y sin declarar linea de titulos o nombres de campo.
Si no te funciona puedes probar asi.

LOAD DATA LOCAL INFILE '" + cFile + "' INTO TABLE mibase.mitabla FIELDS (campo1,@dummy,campo2,@dummy,campo3) TERMINATED BY ';' LINES TERMINATED BY '\r\n

Donde @dummy es un valor inexistente, vale decir que al agregar el campo, asume el valor por defecto especificado en la tabla de mysql. dummy no se inicializa ni se declara, es propio de Mysql

Prueba y me comentas.

PD: Donde tienes el servidor MYSQL, en un Win o en Linux ?

Desde Chile
Adolfo
;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1650
User avatar
Adolfo
 
Posts: 846
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 55 guests