¿Se puede almacenar un documento (xls, pdf, jpg) en una base de datos relacional como una tabla, en caso afirmativo, ¿cómo?

Editar: el OP aclaró que estaba hablando de archivos de documentos, no de “documentos” como en los datos NoSQL semiestructurados.

Sí, es posible poner un archivo en una base de datos relacional. Muchas personas recomiendan no hacerlo, porque hace que la base de datos sea mucho más grande. Prefieren almacenar el nombre de archivo solo en la base de datos y luego almacenar el archivo del documento real fuera de la base de datos en algún servidor de archivos.

Es posible que desee leer la respuesta de Bill Karwin a: ¿Es un mal diseño almacenar imágenes como blobs en una base de datos?

A continuación se muestra mi primera respuesta, cuando asumí que OP significaba “documentos” NoSQL.


Supongo que te refieres a un documento según lo definido por algunas bases de datos NoSQL orientadas a documentos.

Un documento individual tiene un conjunto de campos, por lo que se pueden almacenar como columnas en una tabla RDBMS. Sin embargo, los campos semiestructurados (es decir, matrices y subdocumentos) no se pueden almacenar en columnas, ya que las columnas RDBMS son escalares atómicos.

En general, una colección de documentos no puede representarse mediante una tabla relacional, ya que la definición de una relación requiere que cada entrada tenga el mismo conjunto de campos que los definidos en el encabezado de la tabla. Las bases de datos orientadas a documentos permiten que cada documento de una colección defina sus propios campos, y esto rompe la definición de una relación.

Entonces, la respuesta es no, en el caso general, los documentos no pueden almacenarse como una tabla relacional. Solo si restringe los documentos a aquellos con un conjunto predefinido de campos escalares, funciona.

Cualquier tipo de archivo se puede guardar en una columna de tipo BLOB (objeto binario grande).

En cuanto a los datos semiestructurados, XML es parte del estándar SQL desde 2003 (Tecnología de la información – Lenguajes de bases de datos – SQL – Parte 14: Especificaciones relacionadas con XML (SQL / XML)) y JSON también es compatible con muchos DB.

Como objetos binarios, digamos, del tipo de datos BLOB.

En SQL Server, la sintaxis podría ser:

INSERTAR SELECCIONAR * OPENROWSET (BULK ‘+ @ filePath +’, SINGLE_BLOB) en OPENROWSET (BULK ” ‘+ @ filePath +’ ”, SINGLE_BLOB)

Odio estar en desacuerdo con otro Geek, pero la respuesta realmente depende de lo que quiere decir con “¿se puede almacenar un documento en una base de datos como una tabla”. Si está preguntando si se puede almacenar un documento para que aparezca como campos en una tabla, simplemente almacenando el documento, la respuesta es NO.

¿Se puede almacenar un documento o imagen en uno de los campos de una tabla y luego Sí? Puede almacenar el contenido de un archivo de imagen como BLOB en MySQL e incluso mostrarlo en una tabla en una página web con los comandos PHP correctos.

Si está preguntando si el contenido de una hoja de cálculo de Excel se puede almacenar en una base de datos, de nuevo sí, puede guardar la hoja de cálculo como un CSV y luego importar las columnas como campos y tener las filas como registros. Y también puede almacenar el contenido de un documento de Word en un archivo BLOB o como texto sin el formato.

PostgreSQL también almacenará el documento individual en la base de datos en un campo específico, pero ha pasado un tiempo desde que trabajé con él.

Limite su pregunta a lo que realmente está tratando de hacer y podemos proporcionarle más respuestas.