我正在尋找使用C#和FileHelpers庫將大型SQL Server表導出爲CSV文件。 我可以考慮C#和bcp,但我認爲FileHelpers比bcp更靈活。速度不是特別的要求。 OutOfMemoryException
被運行下面的代碼當在storage.ExtractRecords()
拋出(一些不太重要的代碼已被略去):如何使用FileHelpers庫將大型SQL Server表導出爲CSV文件?
SqlServerStorage storage = new SqlServerStorage(typeof(Order));
storage.ServerName = "SqlServer";
storage.DatabaseName = "SqlDataBase";
storage.SelectSql = "select * from Orders";
storage.FillRecordCallback = new FillRecordHandler(FillRecordOrder);
Order[] output = null;
output = storage.ExtractRecords() as Order[];
當下面的代碼運行時,「超時過期」被扔到link.ExtractToFile()
:
SqlServerStorage storage = new SqlServerStorage(typeof(Order));
string sqlConnectionString = "Server=SqlServer;Database=SqlDataBase;Trusted_Connection=True";
storage.ConnectionString = sqlConnectionString;
storage.SelectSql = "select * from Orders";
storage.FillRecordCallback = new FillRecordHandler(FillRecordOrder);
FileDataLink link = new FileDataLink(storage);
link.FileHelperEngine.HeaderText = headerLine;
link.ExtractToFile("file.csv");
SQL查詢運行的時間超過默認值30秒,因此超時異常。不幸的是,我無法在FileHelpers文檔中找到如何將SQL命令超時設置爲更高的值。
我可以考慮在小數據集上循環一個SQL選擇,直到整個表被導出爲止,但是這個過程太複雜了。 是否有一種簡單的方法在大型數據庫表上導出使用FileHelpers?
你試過沒有*** FileHelpers ***嗎? – Kiquenet