Campos truncados a 255 caracteres |
Responder |
Autor | |
lunasoft
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Habitual Unido: 04/Noviembre/2014 Localización: Graz Estado: Sin conexión Puntos: 100 |
Opciones de entrada
Gracias(0)
Enviado: 10/Junio/2022 a las 19:28 |
Hola a todos.
Me encuentro con el siguiente problema: Necesito importar los datos de un excel a Access. Puedo hacerlo de 2 modos: Modo 1 DoCmd.ransferSpreadSheet(0,10,"X_ExcelOrigen","C:\Trabajo\Origen.xlsx",True,"Origen$") Modo 2 SELECT * INTO X_ExcelOrigen FROM [Excel 12.0;HDR=YES; Database=C:\Trabajo\Origen.xlsx].[Origen$] De cualquiera de los 2 modos obtengo 2 campos con texto truncado a 255 caracteres. He averiguado que como los 8 primeros registros tienen menos de 255 caracteres, crea el campo como texto corto. Así que pensé que podía: 1. crear la tabla 2. modificar el tipo de datos 3. hacer un insert into la cosa queda más o menos así: - Creamos la tabla con un select into SELECT TOP 1 * INTO X_ExcelOrigen FROM [Excel 12.0;HDR=YES; Database=C:\Trabajo\Origen.xlsx].[Origen$] - limpiamos la tabla para no tener duplicados y porque no me deja modificar el campo (demasiados registros) DELETE * FROM X_ExcelOrigen - ejecutamos un DDL para modificar el tipo de campo ALTER TABLE [X_ExcelOrigen] ALTER COLUMN [Descripción HTML] LONGTEXT - llenamos la tabla INSERT INTO X_ExcelOrigen SELECT * FROM [Excel 12.0 Macro;HDR=Yes; Database=C:\Trabajo\Origen.xlsx].[Origen$] ------- RESULTADO: Sigo obteniendo los datos truncados al llegar a los 255 caracteres. ¿Se os ocurre algún modo de solucionarlo? Muchas gracias por vuestro inestimable tiempo y dedicación. Lunasoft |
|
Juanjo Luna (Lunasoft)
Microsoft MVP 2023 ---------------- https://www.luna-soft.es/ https://www.youtube.com/ACCESSoTOTAL https://github.com/ACCESSoTOTAL |
|
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
Opciones de entrada
Gracias(0)
|
Un Saludo.
|
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14025 |
Opciones de entrada
Gracias(0)
|
Aparte de lo que te dice Mounir, prueba esta secuencia:
- creas la tabla importando datos - borras registros - cambias el campo a memo - le creas 'a capón' un registro que tenga más de 255 caracteres en el campo en cuestión - importas los datos Excel - borras el registro 'señuelo' (a lo mejor necesitas mas de uno) |
|
lunasoft
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Habitual Unido: 04/Noviembre/2014 Localización: Graz Estado: Sin conexión Puntos: 100 |
Opciones de entrada
Gracias(0)
|
Muchísimas gracias. Voy a probar.
De momento el truncado desaparece si ordeno los registros por la longitud de los campos. |
|
Juanjo Luna (Lunasoft)
Microsoft MVP 2023 ---------------- https://www.luna-soft.es/ https://www.youtube.com/ACCESSoTOTAL https://github.com/ACCESSoTOTAL |
|
lunasoft
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Habitual Unido: 04/Noviembre/2014 Localización: Graz Estado: Sin conexión Puntos: 100 |
Opciones de entrada
Gracias(0)
|
Pues ahora el problema está en que al realizar la consulta INSERT INTO devuelve los valores truncados.
Es decir: si no obtengo primero los registros con cadenas largas, no consigo nada a pesar de tener cadenas fantasma, .... |
|
Juanjo Luna (Lunasoft)
Microsoft MVP 2023 ---------------- https://www.luna-soft.es/ https://www.youtube.com/ACCESSoTOTAL https://github.com/ACCESSoTOTAL |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14025 |
Opciones de entrada
Gracias(0)
|
O sea, lo que mandan son los primeros registros del Excel (me parece haber leído que son 8).
Pues a importar con los 'largos' por delante o a buscar las especificaciones de importación y creártelas antes de importar. |
|
pitxiku
Colaborador Unido: 27/Septiembre/2017 Localización: En mi casa Estado: Sin conexión Puntos: 1512 |
Opciones de entrada
Gracias(0)
|
A ver si esto del maestro Softjaen te sirve:
|
|
lupecinda
Habitual Unido: 22/Abril/2005 Localización: España Estado: Sin conexión Puntos: 149 |
Opciones de entrada
Gracias(0)
|
Hola.
En alguna ocasión entre distintas bases de datos he utilizado dbeaver para pasar datos entre ellas. Saludos https://dbeaver.io/ |
|
Lupita
|
|
lbauluz
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 29/Marzo/2005 Localización: La Gloria Estado: Sin conexión Puntos: 3861 |
Opciones de entrada
Gracias(0)
|
Hola
Dices: "He averiguado que como los 8 primeros registros tienen menos de 255 caracteres, crea el campo como texto corto." ¿Y si creas en el excel un primer registro falso metiendo más de 255 caracteres en cada campo y luego lo borras? De acuerdo, no es nada elegante, pero si el problema es el que indicas, esto debería funcionar. Un saludo.
|
|
El Búho es un pajarraco
|
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |