如何在SQL中将文件插入表中?

时间:2013-04-24 18:34:26

标签: mysql sql database file

我还没有看到任何可以在SQL中存储文件的数据类型。有类似的东西吗?我特别谈论的是我想在我的表中插入源代码。这样做的最佳方法是什么?它可以作为格式良好的文本存储在我的数据库中,也可以更好(我真正想要的)将其存储为单个文件。请注意我正在使用MySQL。

4 个答案:

答案 0 :(得分:2)

最好不要在SQL数据库中存储文件,而是在服务器中存储文件的路径,或者应用程序可以自行检索的任何其他UNC路径,并使用它来执行任何不必要的操作。

请参阅:https://softwareengineering.stackexchange.com/questions/150669/is-it-a-bad-practice-to-store-large-files-10-mb-in-a-database

并且: Better way to store large files in a MySQL database?

如果您仍想将文件存储在数据库中..这是一个示例: http://mirificampress.com/permalink/saving_a_file_into_mysql

答案 1 :(得分:0)

如果您可以序列化文件,则可以将其存储为二进制文件,然后在需要时进行反序列化 http://dev.mysql.com/doc/refman/5.0/en/binary-varbinary.html

答案 2 :(得分:0)

您还可以使用有一些差异的BLOB(http://dev.mysql.com/doc/refman/5.0/en/blob.html)。通常情况下,我只是将文件存储在文件系统中,并将数据库中的指针存储在数据库中,这样可以通过类似HTTP的方式将其提供回来,并且不会使数据库膨胀。

答案 3 :(得分:0)

如果您需要在该代码中进行搜索,则仅将文件存储在表中才有意义。在其他情况下,您应该只存储文件的URL。

如果要存储文本文件,请使用TEXT数据类型。由于它是源代码,您可以考虑使用ASCII字符集来节省空间 - 但请注意,这会在查询期间导致字符集转换,这会影响性能。此外,如果它是ASCII,您可以使用REGEXP进行搜索(该运算符不适用于多字节字符集)。

要加载文件,如果文件与MySQL在同一服务器上,则可以在INSERT中使用FILE()函数。