sql server中如何儘可能高效地把表導出成excel,有好幾億條數據?
12-29
最近遇到的一個問題,如何儘可能高效地導出這些數據?給個思路可以
幾億條數據excel也無法高效操作的。你應該留在資料庫裡面,然後使用excel直接連他。
心疼題主。
知呼就這樣,大家紛紛指責題主問題提的問題弱智,然後拂袖而去,沒一個頂事的
我本科時一次需要在資料庫(而且是MS SQL Server),里把30億條數據導到excel里。資料庫非本機。
首先excel 版本低了不行,行列數比較小。用高點的版本分幾十個文件可以裝下,之後excel里數據操作每次選擇性粘貼數據,不保留公式,速度還可以。
導數用c#寫的,因為需求原因,需要按條件查詢數據,所以無法批量導出。
剛開始直接寫SQL語句,全導完需要幾年,沒辦法一直在優化。把資料庫分成小塊,每次批量導入本機,在內存中建表查詢然後丟掉不用的。導入,計算,寫文件單開線程不要互相等,還有很多優化記不住了。最後優化到一次需要的數據可以三天導出就停止優化了,干正事去了,畢竟不是學IT的,數據是拿來用的。
資料庫和excel都是微軟的,盡量調用微軟的庫和封裝的方法 ,少寫自己的方法。微軟自己好像有些莫名其妙的優化,會比我們寫的方法效率有大幅度莫名其妙的提升。
ps,一定要把程序正在執行的任務,進度條,還有估算的時間幾個功能寫出來,不然總是覺得在死機。很有代表性的一個軟體問題,來湊湊熱鬧說兩句。
- 做這件事情的真正目的是什麼?比如說,是要給人看?生成圖表?還是交到下一個環節處理?沒搞清楚這點之前任何軟體開發行為——設計、寫代碼、包括在知乎上提問解決方案——都是浪費資源。
- 完成了第一步以後,還要進行可行性分析和技術方案設計。明白一些軟硬體限制,例如excel表格最多支撐多少萬條記錄;要打開表格的人會在什麼樣的電腦上怎麼打開;用戶願意花多少時間等待……
- 最後敲定到軟體層面的設計,再對問題的本質進行抽象和建模,選擇合理的演算法或者計算機技術來解決一些關鍵點。比如,我可能會推薦你一本叫做《編程珠璣》的書的前兩章,也許會有啟迪。
excel2013最大行數:1048576。樓上的答案都是廢話
用apache poi將資料庫里的數據查詢出來然後往excel寫, excel一個sheet好像最多是65535條數據,所以到了65535你可以重新寫一個sheet頁。
&
&
&
&a& &b& &&
&a& &b& &
用記事本把上邊這段保存下來,後綴改成.xls,雙擊打開。
好了你知道我要說什麼了~_~
果斷csv格式
為什麼不考慮bcp出來?
python pandas直接連sql server,用dataframe操作。導入excel還不如直接在sql server里。。。
跟前面的人一樣,我也覺得這樣做挺奇怪,到底是什麼樣的功能,需要導幾十億條數據呢?就算你能導出來,又真的能打開嗎?
1.看目標需求是否是一個地球人的需求和正常思維。我生活中碰到有些人想問題是用屁股在想的,在他們的思想里,分分鐘可以造出並發射衛星的。
2.既然遇到了這個問題,並且也不能說服別人改變這個不合理的設計思想的話,就想辦法來解決它吧。
樓上他們都回答過了。
其實幾億條記錄就幾億條記錄吧,一個excel存不下就用分頁,導出成好這個文件吧,這樣就很容易啊。
excel行數上限
大家的方法都不錯。這個個幾億條數據的excel能打開不?
用csv方式導出
上csv吧,如果非要導出的話
導出到excel之後幹什麼用呢?放在資料庫中,你想要查詢什麼數據也很方便啊。
推薦閱讀:
※誰有精簡的SQLSerVer安裝包,聽說有一種只有28M?
※win7如何安裝SQL資料庫2000?
TAG:資料庫 | 程序員 | SQL | 編程 | MicrosoftSQLServer |