2011年10月14日 星期五

大量資料匯出CSV檔之問題處理

之前都會直接用一個loop 把所有內容,
利用StringBuilder全部串起來,最後再存成CSV檔。
一直以來都相安無事,

最近踢到鐵板了,當資料量過大時,如30萬以上,就會發生OutofMemory的Error。

2011年9月1日 星期四

SQL- 利用BULK INSERT做大量匯入


大量匯入資料,可使用下面的方式,我測試79萬筆資料約18秒完成insert


2011年7月20日 星期三

SSIS - 利用GMAIL Smtp寄發MAIL

若想使用gmail來寄發mail,不能直接使用"傳送郵件工作"的,因為gmail要設特定的port,
還要輸入帳號及密碼的帳戶驗證,這些都是傳送郵件工作屬性中無法設定的。

所以,我們若要使用gmail來發送的話,就需利用"指令碼工作",來寄發mail。
程式如下:


2011年7月12日 星期二

SQL 大量insert into 效能改善

最近一直在跟SQL打仗,總想著有沒有更快的方法。

實驗對象: 共有67萬筆左右的原始資料要做清整,之後再INSERT到結果表中。

若一筆一筆CONNECTION OPEN() , CLOSE(), RUN個70萬次,一定是最慢的。

所以,就設定一次抓1000筆先把SQL組好再做INSERT。
原先的組法是
INSERT INTO A (a1,a2,a3) values ('x1','x2','x3');
INSERT INTO A (a1,a2,a3) values ('x1','x2','x3')
 這樣的速度大概15分鐘run30萬筆左右。

後來發現sql 2008有新的用法,還有人寫ppt說速度會提升,寫法如下:

2011年7月10日 星期日

C# 取TABLE中的最大最小值~

以前,為了要取最大最小值,都要在那裡寫一個LOOP,玩比大小,最後取得最大或最小值。
(或是一些運算式,都會傻傻的,土法煉鋼)

最近因為瘋狂拜古狗大師,才發現原來有內建的FUNCTION可以用。@_@

2011年7月8日 星期五

C# 讀取EXCEL的日期.....

EXCEL的日期,轉出時,會變成數字。

數字字串的轉換規則如下:
  1. 整數部分: 該整數是從1900/1/1 起算, 數字 0 表示 1900/1/1.
  2. 小數部分: 小數部份是指佔該天的百分比, 所以 0.5 表示中午 12 點, 0.25 表示上午 6 點. 
一開始真的很認真的給他寫成: