Reputation: 4507
What is the best way to store a large amount of text in a table in SQL server?
Is varchar(max) reliable?
Upvotes: 56
Views: 139081
Reputation: 110
Depending on your situation, a design alternative to consider is saving them as .txt file to server and save the file path to your database.
Upvotes: 1
Reputation: 1
Use nvarchar(max)
to store the whole chat conversation thread in a single record. Each individual text message (or block) is identified in the content text by inserting markers.
Example:
{{UserId: Date and time}}<Chat Text>.
On display time UI should be intelligent enough to understand this markers and display it correctly. This way one record should suffice for a single conversation as long as size limit is not reached.
Upvotes: 0
Reputation: 1733
Split the text into chunks that your database can actually handle. And, put the split up text in another table. Use the id
from the text_chunk
table as text_chunk_id
in your original table. You might want another column in your table to keep text that fits within your largest text data type.
CREATE TABLE text_chunk (
id NUMBER,
chunk_sequence NUMBER,
text BIGTEXT)
Upvotes: 3
Reputation: 15265
Varchar(max) is available only in SQL 2005 or later. This will store up to 2GB and can be treated as a regular varchar. Before SQL 2005, use the "text" type.
Upvotes: 6
Reputation: 16357
According to the text found here, varbinary(max) is the way to go. You'll be able to store approximately 2GB of data.
Upvotes: 3
Reputation: 37819
I like using VARCHAR(MAX) (or actually NVARCHAR) because it works like a standard VARCHAR field. Since it's introduction, I use it rather than TEXT fields whenever possible.
Upvotes: 20
Reputation: 16809
In a BLOB
BLOBs are very large variable binary or character data, typically documents (.txt, .doc) and pictures (.jpeg, .gif, .bmp), which can be stored in a database. In SQL Server, BLOBs can be text, ntext, or image data type, you can use the text type
text
Variable-length non-Unicode data, stored in the code page of the server, with a maximum length of 231 - 1 (2,147,483,647) characters.
Upvotes: 3
Reputation: 37850
In SQL 2005 and higher, VARCHAR(MAX) is indeed the preferred method. The TEXT type is still available, but primarily for backward compatibility with SQL 2000 and lower.
Upvotes: 80