![]() |
Como convertir un campo VARCHAR a uno BLOB, si se puede?
Pues eso como puedo hacer para cambiar todos los ficheros de un campo VARCHAR a uno BLOB.
O como convertir el campo VARCHAR en BLOB directamente. |
Hola,
en teoría debería ser algo así: Código:
alter table "<tabla>" Puedes intentar "tocar" las tablas del sistema donde se almacena la información de tipo de las columnas. Concretamente la tabla RDB$FIELDS, columnas RDB$FIELD_TYPE, RDB$FIELD_SUB_TYPE. De todas formas, tampoco estoy seguro que puedas llegar a buen puerto. Otra alternativa: 1. Crear la columna BLOB. 2. Mediante un UPDATE pasar el contenido de la columna VARCHAR a la columna BLOB recién creada. 3. Eliminar la columna VARCHAR. Saludos. |
Habia pensado ya en crear un nuevo campo de tipo BLOB, y hacerlo mediante un UPDATE como bien dices, pero una cosa
como tengo que declarar el nuevo campo de tipo BLOB es decir eso del subtipo que decis, que no lo tengo claro. Porque yo creo el campo Código:
Código:
UPDATE FACTURAS SET DESCRIPCION_CONCEPTO2=DESCRIPCION_CONCEPTO |
Hola.
No puedes hacer ese UPDATE, porqué el motor no permite la conversión de tipos entre varchar y blob, con lo que los campos són de distinto tipo. O bien te haces un pequeño programa Delphi, en que te coja un campo y lo asigne a otro, o tendrás que usar una UDF (hay algunas que llevan funciones de conversión de blob a varchar). En la web de Claudio Valderrama tienes una lista bastante completa de udf's. http://www.cvalde.com/ (Por cierto ahora no está en linea, supongo que será algo temporal, aquí tienes otra recopilación que no es tan completa http://www.ibphoenix.com/main.nfs?a=...e=ibp_udf_libs) Saludos. |
Hola,
Cita:
estos son los metadatos que estoy utlizando ... Código:
CREATE TABLE "varchar2blob" Código:
update "varchar2blob" Saludos. |
Hola
Tienes razón, lo acabo de probar, permite hacer directamente la asignación de campos. Permite hacer cosas como : set Campo_Blob = Campo_Varchar set Campo_Blob = 'Texto' pero no expresiones como : set Campo_Blob = Campo_Blob || 'Texto' judoboy tienes que usar el subtipo 1 (Texto). ¿ Que mensaje de error te da ? ¿ Que versión de Interbase/Firebird utilizas ? Saludos. |
Vamos a ver por partes
Primero creo el nuevo campo de tipo BLOB de la siguiente forma: Código:
alter table lineas_partida add descripcion_concepto2 2º Hago el UPDATE Código:
var SentenciaSql:String; Y me da el siguiente error Invalid modify request. conversion error from string "BLOB" |
Hola,
tal vez sea un problema del juego de caracteres (¿?), ya que el UPDATE que construyes, aparentemente debería funcionar; a mí desde luego me funciona. De todas formas, ¿no sería más fácil hacerlo directamente con una herramienta tipo IBConsole, ISQL o similares, antes que hacerlo desde código Delphi? Saludos. |
Hola.
A mi también me funciona. ¿ Que Interbase / Firebird usas ?, si usas una versión un poco antigua (IB 5, IB 6.0 OS, FB 1 RC1, ...) ¿ puedes actualizarte a Firebird 1.03 ? Saludos. |
Utilizo Intebase 6.0
Si me actualizo a Firbird 1.3, no tendre nigún problema con mis BDA? ¿Me funcionarán todas las consultas que tengo creadas? y lo más importante como hago la actualización? |
Hola,
Cita:
Cita:
Cita:
2. Hacer un back-up previo (con InterBase 6.0) de todas las bases de datos que querrás utilizar con Firebird. 3. Desinstalar InterBase 6.0 4. Instalar Firebird 5. Recuperar (restore) los back-ups e las bases de datos que has hecho anteriormente. Básicamente esos son los pasos. En cuanto a usuarios creados en InterBase 6.0: en principio una copia directa de la base de datos de usuarios (isc4.gdb) que estabas utilizando en IB 6, debería funcionar en Firebird. Para más seguridad, puedes hacer el mismo proceso de back-up/restore que hagas con las bases de datos de los usuarios. Saludos. |
La franja horaria es GMT +2. Ahora son las 12:53:51. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi