Ver Mensaje Individual
  #1  
Antiguo 05-01-2012
tucumano21 tucumano21 is offline
Registrado
 
Registrado: oct 2008
Posts: 4
Reputación: 0
tucumano21 Va por buen camino
load data infile con caracteres especiales

Hola a todos, abro este hilo porque estuve buscando un par de dias sin encontrar solución a mi problema, el cual es el siguiente
Estoy desarrollando una aplicación en delphi 7 con mysql 5. Dicha aplicación tiene que hacer backup y restaurar de las tablas de las bases de datos.
yo lo hice utilizando las senetencias select * into outfile para exportar los datos de las tablas a un .txt y load data infile para importar los datos

A un query le asigna las siguientes sentencias segun correspondan

Código SQL [-]
sql.Text:='select * into outfile "'+camino+'\\resumenes.txt" lines terminated by "\r\n" from resumenes';

Código SQL [-]
sql.Text:='load data infile "'+LRestaurar3.Caption+'\\resumenes.txt"into table rendicion.resumenes lines terminated by "\r\n"';

*camino y Lrestaurar3.caption: variables donde cargo la ruta para importar y exportar los datos

Estas sentencias me funcionan, pero cuando restauro las tablas, en las cadenas que tienen caracteres especiales, como acentos, dichos caracteres se cambian por caracteres "extraños"

por ejemplo los datos se guardan así (pero en la aplicación se muestran bien):

mysql> select * from rubros;
+----------+-------------------------------------+
| idRubros | Descripcion |
+----------+-------------------------------------+
| 1 | MEDICAMENTOS |
| 2 | MEDICAMENTOS (compra de urgencia) |
| 3 | MAT. DE CURACIËN Y/O DESCARTABLES |
| 4 | VIVERES |
| 5 | ARTICULOS DE LIBRER═A |
| 6 | MANTENIMIENTO DE MAQUINAS Y EQUIPOS |
| 7 | MANTENIMIENTO EDILICIO |
| 8 | PERSONAL CONTRATADO |
| 9 | VARIOS |
| 10 | SERVICIOS P┌BLICOS |
| 11 | SERVICIOS DE TERCEROS |
| 12 | PASAJES |
| 13 | FOTOCOPIAS |
| 14 | BIENES DE CAPITAL |
+----------+-------------------------------------+
14 rows in set (0.17 sec)

y luego de realizar la restauración quedan guardados asi:

mysql> select * from rubros;
+----------+-------------------------------------+
| idRubros | Descripcion |
+----------+-------------------------------------+
| 1 | MEDICAMENTOS |
| 2 | MEDICAMENTOS (compra de urgencia) |
| 3 | MAT. DE CURACIÓN Y/O DESCARTABLES |
| 4 | VIVERES |
| 5 | ARTICULOS DE LIBRERÍA |
| 6 | MANTENIMIENTO DE MAQUINAS Y EQUIPOS |
| 7 | MANTENIMIENTO EDILICIO |
| 8 | PERSONAL CONTRATADO |
| 9 | VARIOS |
| 10 | SERVICIOS PÚBLICOS |
| 11 | SERVICIOS DE TERCEROS |
| 12 | PASAJES |
| 13 | FOTOCOPIAS |
| 14 | BIENES DE CAPITAL |
+----------+-------------------------------------+
14 rows in set (0.00 sec)

aclaro que cuando exporto las tablas el .txt se guarda de forma correcta, como muestro a continuación:

1 MEDICAMENTOS
2 MEDICAMENTOS (compra de urgencia)
3 MAT. DE CURACIÓN Y/O DESCARTABLES
4 VIVERES
5 ARTICULOS DE LIBRERÍA
6 MANTENIMIENTO DE MAQUINAS Y EQUIPOS
7 MANTENIMIENTO EDILICIO
8 PERSONAL CONTRATADO
9 VARIOS
10 SERVICIOS PÚBLICOS
11 SERVICIOS DE TERCEROS
12 PASAJES
13 FOTOCOPIAS
14 BIENES DE CAPITAL

probé ejecutando las siguientes sentencias antes de la restauración pero no medieron resultado

Código SQL [-]
SET CHARACTER SET 'UTF8'
Código SQL [-]
SET NAMES 'UTF8'

*tambien con latin1 en vez de UTF8
Responder Con Cita