[英]Fast way of writing SQL server table into file
我有一個遠程SQL Server。 我想在此服務器中制作所有表的本地副本。 我不關心本地使用的文件格式,我正在尋找從SQL服務器獲取數據到文件的最快方法。 (注意:服務器端備份不是一個選項)
這是我目前的做法:
第1步 。 創建閱讀器並將所有數據讀入對象列表
while (reader.Read()) {
var fieldCount = reader.FieldCount;
for (int i = 0; i < fieldCount; i++) {
objects.Add(reader.GetValue(i));
}
}
第2步 。 將對象轉換為字符串
List<string> test = new List<string>();
foreach (var o in objects) {
test.Add(o.ToString());
}
第3步 。 將字符串寫入(CSV)文件
foreach (var s in test) {
backupFile.Write("\"");
backupFile.Write(s);
backupFile.Write("\";");
}
我已經測量了這三個步驟的性能:
我正在尋找加快步驟2的方法。有沒有更快的方法將這些對象添加到文件中? (不必是文本文件。本地數據庫文件的二進制文件也可以)
你為什么要完全打擾三個步驟。
為什么不
while (reader.Read()) {
var fieldCount = reader.FieldCount;
for (int i = 0; i < fieldCount; i++) {
backupFile.Write("\"");
backupFile.Write(reader.GetValue(i).ToString());
backupFile.Write("\";");;
}
backupFile.WriteLine();
}
除非你當然使用兩個線程。 將數據推送到集合中的一個。 並將數據刷新到文件中。
如果您不關心本地使用的文件格式,如何將SQL表加載到DataTable對象並使用:
datatable.WriteXml("c:\YourFile.xml");
使用OPENROWSET命令。 例:
INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\testing.xls;',
'SELECT Name, Date FROM [Sheet1$]')
SELECT [Name], GETDATE() FROM MyTable
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.