PDA

Ver la Versión Completa : Utilización del EXTERNAL con CREATE TABLE


feruiz
22-04-2004, 17:15:45
Estoy intentando crear con FireBird una tabla externa como he leído en una consulta de hace varios meses. Pero resulta que no me deja, me da error. Ejemplo:

CREATE TABLE Provincias
EXTERNAL "C:\BD\Provincias" (Nombre VarChar(30)
)

El error es el siguiente:

FAILED - Access to external file "Provincias" is denied by server administrator
Quisiera saber como se hace.

Gracias

gendelphi
23-04-2004, 10:28:37
Que tal.

La forma en la que lo estas haciendo es correcta, solamente te falta configurar tu servidor Firebird, para que soporte la creacion de archivos externos, para ello debes de editar (por ejemplo en el bloc de notas) el archivo firebird.conf que se encuentra ubicado en la carpeta donde hayas hecho la instalación. En éste archivo debes cambiar el valor del parámetro ExternalFileAccess que soporta los siguientes valores:

ExternalFileAccess = None
ExternalFileAccess = Full
ExternalFileAccess = Restrict {carpeta1;carpeta2;...}

La primer forma es la predeterminada y evita a toda costa la creacion de tablas externas.
La segunda forma permite la creación de tablas externas en cualquier ubicación.
Y la tercera (la mas recomendable) te permite definir en que carpetas será posible la creación de tablas externas, separadas mediante "puntos y coma", por ejemplo: c:\external;c:\bd que debe ir seguido de Restrict:

ExternalFileAccess = Restrict c:\external;c:\bd

Nota: Despues de hacer las modificaciones pertinentes, debes reiniciar el servicio de Firebird para que los cambios hechos tomen efecto.

feruiz
28-04-2004, 10:54:50
Muchas gracias por la información, me ha servido de mucho, ya me podía estar volviendo loco, creía que lo estab haciendo mal cuando no era así.

Nando

mlara
27-05-2004, 01:56:40
Aprovechando este hilo quisiera darle un poco de continuidad... :)

1. Si yo deseo almacenar un archivo en el mismo servidor donde se encuentra instalado InterBase por intermedio de un SP, pero de tal manera que el archivo sea un archivo plano (digamos un archivo CSV o un archivo de texto separado por tabulaciones donde cada campo, así sea decimal, fecha o entero se ve como texto) entonces no puedo crear una tabla externa ya que el archivo de la tabla tiene un formato predeterminado por InterBase. Cómo puedo hacer esto? (uso InterBase 6)

Al respecto he leído que con InterBase 6.5 puedo exportar archivos XML pero creo que haciendo uso de la VCL de Delphi, que en este caso no estoy usando.

Si quisiera exportar datos no a un archivo plano sino a un archivo XML existirá una utilidad que me permita hacerlo, directamente desde el servidor (por intermedio de un SP)?

2. Se habló del archivo firebird.conf. En InterBase 6 pude crear una tabla externa sin problema, pero ahora quisiera restringir los directorios en los cuales puedo crear tales tablas. Por dónde puedo configurar esto en InterBase?

Gracias.

mlara
01-06-2004, 07:15:27
He encontrado parcialmente la respuesta al punto uno. Puedo utilizar una UDF para almacenar información en un archivo plano. Construir una UDF que haga esto es relativamente sencillo, dependiendo de lo que uno quiera grabar dentro del archivo.