将小文件保存到数据库,保存它们的最佳方法是什么?

时间:2014-02-07 21:53:00

标签: c# sql-server-2008-r2 binary

我有两个文件需要上传到Sql数据库。每个文件都有自己的表。

File1:  filename.zip (of course a compressed file)
File1:  filename.asc (flat tab delimited file)

我正在用C#编写,我正在创建一个服务,通过它将这些文件发送到数据库。

保存这些文件的最佳方法是什么?

我应该以不同的方式保存它们,因为它们是两种不同类型的文件,或者我可以使用File.ReadAllBytes来保存它们吗?

我正在创建表,服务和连接到服务器的应用程序,因此我可以完全控制数据类型。我已经开始了这个过程,但我并不是100%确定我有这个正确的。

这就是我创建表格的方式:

enter image description here

正如我之前所说,如果需要,我可以更改数据类型。现在我打算把它们变成二进制。这样做有不利之处吗?

我只是对处理此问题的最佳方法提出了一些指导。

一如既往地谢谢!

进行追加

我想补充一点,这些文件的大小通常不超过12kb。

1 个答案:

答案 0 :(得分:2)

如果文件非常小(每个少于8000个字节),则可以将它们保存到BINARYVARBINARY(MAX)类型的列中,但大多数文件很容易超过该大小。

也就是说,SQL Server确实提供了一种通过FILESTREAM data type, the File Table or the Remote BLOB Storage在数据库中存储文件的机制。

另一个注意事项是,虽然你的问题不是很清楚,但为每个文件分别设置表通常不是设计数据库的正确方法。如果您使用类似的语义存储类似的信息,那么关于文件的实际情况应该是一个包含多行的表,每个文件都有一行。