日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
數(shù)據(jù)庫中海量文件的批量轉(zhuǎn)移方法

事情的經(jīng)過是這樣子的!數(shù)據(jù)庫A表添加一條記錄,**系統(tǒng)中B目錄下就會多出5n個文件。隨著系統(tǒng)運行3年多,B目錄中的文件數(shù)已高達2M多,而這些文件恰恰又是用戶高度頻繁訪問的。于是問題就來了,一方面是用戶訪問文件速度變慢了;另一方面是文件太多,很難維護。

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供豐潤網(wǎng)站建設(shè)、豐潤做網(wǎng)站、豐潤網(wǎng)站設(shè)計、豐潤網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、豐潤企業(yè)網(wǎng)站模板建站服務(wù),10年豐潤做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

怎么辦呢?思許良久,發(fā)現(xiàn)A表中有個錄入時間字段是不會變更的。如果截取錄入時間的年份+月份組成,用來創(chuàng)建B目錄下的子目錄名,把當(dāng)年當(dāng)月新增的文件統(tǒng)一歸檔于該子目錄下,不就可以嗎?新增的文件好處理,可對于舊文件歸檔需要費點周折,因為文件得遷移到新的子目錄里。

下面是關(guān)于文件遷移的主要代碼:

 
 
 
 
  1.  static void Main(string[] args) 
  2.    string paperPath = ConfigurationManager.AppSettings["PaperBuildPath"]; 
  3.   Console.WriteLine(string.Format("試卷目錄:{0}", paperPath)); 
  4.  Console.WriteLine(); 
  5.   Console.WriteLine("目錄是否正確? 正確請按任意鍵......"); 
  6.   Console.WriteLine(); 
  7.  Console.ReadKey(); 
  8.   string[] files = Directory.GetFiles(paperPath); 
  9.  int num = 0; 
  10.   PublicExam[] list = Gateway.Default.FindArray(); 
  11.  foreach (PublicExam publicExam in list) 
  12.   foreach (string file in files) 
  13.     { 
  14.       //源文件名(去除路徑后) 
  15.       string fileName = file.Split('\\').Last(); 
  16.  if (fileName.StartsWith(publicExam.FGuid.ToString(), StringComparison.CurrentCultureIgnoreCase)) 
  17.       { 
  18.          //目標(biāo)文件夾 
  19.          string destFilePath = paperPath + publicExam.FInputTime.ToString("yyyyMM"); 
  20.       if (Directory.Exists(destFilePath) == false) 
  21.            Directory.CreateDirectory(destFilePath); 
  22.       //目標(biāo)文件名 
  23.        string destFileName = destFilePath + "\\" + fileName; 
  24.       if (File.Exists(destFileName)) 
  25.           File.Delete(destFileName); 
  26.          Console.WriteLine(string.Format("正在遷移文件:{0}", fileName)); 
  27.       //遷移文件 
  28.        File.Move(file, destFileName); 
  29.       num++; 
  30.        } 
  31.      } 
  32.     } 
  33.   Console.WriteLine(); 
  34.  Console.WriteLine(string.Format("共遷移{0}個文件,請按任意鍵退出......", num)); 
  35.    Console.ReadKey(); 
  36.  } 

上面例子參考了MSDN 關(guān)于File Class 和 Directory Class 的使用方法。

執(zhí)行效果圖如下:

Tips:

目錄名(年份+月份) 如:201101

c#   => DateTime.Now.ToString("yyyyMM")

SQL => convert(varchar(6),getdate(),112)

當(dāng)然僅僅文件遷移是不夠的,還有很多工作要做,比如修改程序;更新數(shù)據(jù)庫表記錄等等。我知道,這次“手術(shù)”不符合開放-關(guān)閉原則。


文章題目:數(shù)據(jù)庫中海量文件的批量轉(zhuǎn)移方法
文章地址:http://www.5511xx.com/article/copeihg.html