2009-10-04 14 views
8

Estoy haciendo una pequeña aplicación asp.net mvc. en el que tengo que calcular los datos de varios archivos CSV (entre 5 y 10 archivos).¿Cuál es la mejor manera de almacenar archivos de texto en una base de datos de servidor Sql, para una aplicación web asp.net mvc?

La aplicación debe proporcionar acciones de carga y descarga para estos archivos.

La parte donde no tengo experiencia es la base de datos. ¿Qué tipo de columna debería usar? texto, imagen, binario? el tamaño de un archivo será de 80 KB a 500 KB

+0

¿En realidad tratando de guardar el archivo completo como una entidad en la base de datos, o simplemente desea cargar los datos en el archivo CSV en una mesa? – flayto

+0

Quiero almacenar el archivo como una entidad. – andreiursan

Respuesta

11

Los tipos TEXT, NTEXT y IMAGE están obsoletos. No los utilice para el nuevo desarrollo. Se eliminarán de una futura versión de SQL Server para siempre.

Para SQL Server 2005 en adelante, use VARCHAR(MAX)/NVARCHAR(MAX) si se trata de archivos de texto puros (como el código fuente o archivos CSV) o VARBINARY(MAX) si se trata de archivos binarios.

Esos permiten hasta 2 GB de almacenamiento para cada archivo individual, y puede usar todas las funciones de cadena T-SQL habituales para manipularlos (los campos (N) VARCHAR (MAX), eso es).

Si está utilizando SQL Server 2008, también hay una opción adicional: el atributo FILESTREAM en las columnas VARBINARY(MAX). Esto le permite almacenar los archivos en el sistema de archivos de la máquina del Servidor SQL (en lugar de las tablas de la base de datos) mientras preserva la integridad de los datos y las transacciones.

FILESTREAM se recomienda para archivos que suelen tener un tamaño superior a 1 MB, o si necesita más de 2 GB (ya que no puede almacenar más de 2 GB en una columna normal VARBINARY(MAX)).

Marc

+2

Mencione sin límite los tipos de FILESTREAM para completar. – whatnick

+0

¡Gracias a todos! Resuelto, supongo que usaré FILESTREAM. – andreiursan

Cuestiones relacionadas