2013-07-25 1 views
6

जैसा कि यह प्रश्न में कहता है, एक बड़ी टेक्स्ट फ़ाइल दी गई है, मैं अपनी सामग्री को SQL फ़ाइल में एक nvarchar (अधिकतम) कॉलम में कैसे प्राप्त कर सकता हूं बिना पूरी फ़ाइल सामग्री को स्मृति में लोड किए बिना (या तो गतिशील एसक्यूएल कथन बनाने के लिए या एक के रूप में एसपी पैरामीटर)?क्या मैं वेब सर्वर पर स्मृति में पूरी फ़ाइल के बिना ASP.net से SQL सर्वर में एक बड़ा टेक्स्ट मान डाल सकता हूं?

मेरा सबसे अच्छा समाधान अब तक एक खाली मूल्य के साथ एक पंक्ति डालना है और फिर एक लूप रन अपडेट में लेनदेन में प्रत्येक बार डेटा के भाग को जोड़ना है। फ़ाइल को डेटाबेस सर्वर पर कॉपी करने और बीसीपी का उपयोग करने के अलावा कोई बेहतर तरीका है? डेटा को स्ट्रीम करने का कोई तरीका?

+1

देखो (http://msdn.microsoft.com/en-us/library/system.data.sqlclient। sqlbulkcopy.aspx)। –

+0

मैंने एसकब्लूल्ककॉपी का उपयोग किया है, लेकिन डेटा डेटाटेबल में डेटा मेमोरी में होना आवश्यक है। जब तक इसका उपयोग करने का कोई और तरीका न हो? – powlette

+1

मुझे लगता है कि आपके प्रश्न का उत्तर http://stackoverflow.com/questions/2101149/how-to-i-serialize-a-large-graph-of-net-object-into-a-sql-server-blob- बिना सी –

उत्तर

3

.net4.5 SqlParameters के रूप में समर्थन [SqlBulkCopy वर्ग] में TextReaderhttps://msdn.microsoft.com/en-us/library/hh556234(v=vs.110).aspx

using (SqlConnection conn = new SqlConnection(connection_string)) 
using (SqlCommand cmd = conn.CreateCommand()) 
using (FileStream file = File.OpenRead(@"C:\temp\bigtextfile.txt")) 
{ 
    cmd.CommandText = "INSERT INTO RandomTable (TextBlob) VALUES (@text)"; 
    cmd.Parameters.Add("@text", System.Data.SqlDbType.NVarChar, -1).Value = file; 
    conn.Open(); 
    cmd.ExecuteNonQuery(); 
} 
संबंधित मुद्दे