![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Crear un File External desde Firebird
Hola a todos. Quiero crear un fichero de texto externo, pero éste se coloca dentro del .FDB como una tabla más. He ejecutado la orden (sql) siguiente:
CREATE TABLE EXT_TBL EXTERNAL FILE 'arboles.ext'; COMMIT; Pero este fichero se enclava en el FDB, no como fichero individual y no puedo accder a él para rellenarlo con los datos. ¿Qué es lo que hago mal? Puedo usar 'D:\TEXTFILES\arboles.txt' ? Gracias por toda ayuda. Bulc |
#2
|
||||
|
||||
¿Y la estructura de la tabla?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
||||
|
||||
Es la siguiente
Luego he creado igualmente otra tabla como destino de los datos, claro. Pero eso no parece que tenga que afectar a la ubicación. Quiero decir que si la tabla externa se ubica dentro del .FDB, no puedo acceder a ella con un editor de texto... Al fin y al cabo se supone que debería ser eso... Externa! ¿no? ¿O es que hay dos ficheros el EXT_TBLl y el TRONCO.TXT? Si es así, se me ocurre pensar que la tabla EXT_TBL es reflejo de la otra TRONCO.TXT (y accede a sus datos) ¿Es así? Dime si quieres más explicaciones. Y gracias por tu dedicación. bulc Última edición por nlsgarcia fecha: 26-12-2014 a las 13:49:44. Razón: Sintaxis e Identación SQL |
#4
|
||||
|
||||
Yo lo he usado algunas veces para exportar/importar datos mediante un fichero externo, pero nunca me fijé que existiera el fichero que mencionas (EXT_TBLI).
¿Has mirado la documentación en firebirdsql.org?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#5
|
||||
|
||||
He mirado el tocho "The Firebird Book" pág. 286
He pensado que tal vez el fichero EXT_TBL sirva de espejo del otro 'TRONCO.TXT'.
He metido los datos con el editor Bloc de Notas y luego lo he recortado con el mismo editor del Delphi. La estructura de una linea es esta: NUM (5 espacios), NCIE (31 espacios), NCAS (27 espacios) NOTHER ( 90 espacios), NLINE (1 espacio). Este último lo destino al retorno de carro tal como indica el libro. No sé si habría que poner un código ANSI en este final de retorno de carro. Supongo que no. Ejecuto la orden: SELECT NUM, ECIE FROM EXT_TBL y obtengo esta respuesta: Statement failed, SLQSTATE = 28000 Access to external file "un.txt" is denied by server administrator. He repasado los pasos del libro. Me queda probar con un par de líneas a ver qué pasa. En tanto, gracias por tu tiempo. Ah! y feliz año nuevo. bulc |
#6
|
||||
|
||||
Aclaraciones a los ficheros externos
Permite unas aclaraciones. Son el resultado de mirar por varios sitios. He avanzado algo en lo de llevar datos de un fichero de texto a una tabla de firebird.
Esto puede ahorrar mucho trabajo de insercción de datos. De ahí mi interés. Lo primero que se requiere para usar ficheros externos es habilitar su uso en el fichero Firebird_2_5\firebird.conf. Debe quitarse la almohadilla a la linea #ExternalFileAccess = None y convertirla en esta (en mi caso) otra: ExternalFileAccess = Restrict D:\DELFIXE3\ALUMNOS; Si no deja el sistema guardar los datos bajar el cursor de Protección a cero (Panel de Control->Seguridad) Luego se va uno al SQL y se crean dos tablas. Una será una tabla la imagen interna (en el servidor Firebird) de un fichero de texto externo. Este fichero externo contiene los datos bien encolumnados y con un final de línea EOL que ocupa dos caracteres. Debe situarse en el directorio D:\delfixe3\maderas al cual hemos habilitado. Por ejemplo la linea: Nombre + Apellidos + Ciudad tendría 14 + 40 + 30 caracteres y un final de línea. La orden de creación del fichero indica donde estará su imagen. CREATE TABLE EXT_TBL EXTERNAL FILE 'ALUMNOS.TXT' ( NOM CHAR(14), APELLIDOS CHAR(40), CIUDAD CHAR(30), FLINEA CHAR(2) ); COMMIT; Ahora al citar con un select la tabla EXT_TBL, esta obtendrá los datos del fichero de texto 'alumnos.txt'. Si queremos importar los datos desde el fichero externo a otra tabla de firebird, abrimos otra tabla en el .FDB. Con el comando: CREATE TABLE ALUMNOS ( NOMBRE VARCHAR(14), APELLIDOS VARCHAR(40), CIUDAD VARCHAR(30), FLINEA CHAR(2) ); Una vez creadas todas las tablas podemos insertar los datos del fichero externo (a traves de su imagen) en la tabla firebird. Haríamos así: INSERT INTO ALUMNOS SELECT NOM, APELLIDOS, CIUDAD, FLINEA FROM EXT_TBL; COMMIT; .................................................................................................... .......................... He seguido estos pasos y funciona. El mayor problema, al menos para mí, es colocar correctamente los datos en el editor para que no se descabalguen los datos columnares. Espero pueda servir. Feliz resacón. bulc |
#7
|
||||
|
||||
No tiene por qué llevar ese nombre, supongo que otro cualquiera sirve. Lo que importa es el concepto. Ese fichero estará dentro de conjunto .FDB pero es reflejo del original en formato texto. Esa es la clave.
|
#8
|
||||
|
||||
He averiguado que se puede convertir un fichero de texto externo en uno interno de firebird usando gbak con el parámetro -co (convert)
|
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Consejo con external table Firebird 2.5 | jars | SQL | 3 | 13-11-2014 16:46:35 |
Crear DB Firebird desde delphi | totote | Conexión con bases de datos | 3 | 27-12-2007 02:25:17 |
Error al crear tabla con "external file" | hecospina | Firebird e Interbase | 1 | 11-11-2007 01:22:02 |
external file en IBExpress | santiago14 | Firebird e Interbase | 1 | 29-07-2004 20:28:17 |
Crear una external Function que haga un round | RaulChemical | Firebird e Interbase | 3 | 16-02-2004 13:18:44 |
![]() |
|