自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

數(shù)據(jù)庫(kù)中海量文件的批量轉(zhuǎn)移方法

數(shù)據(jù)庫(kù) SQL Server
今天我們將談到的是在數(shù)據(jù)庫(kù)中海量文件的批量轉(zhuǎn)移,如果這樣的問題不解決會(huì)影響到相關(guān)文件的維護(hù)工作。

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

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

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

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

上面例子參考了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ù)庫(kù)表記錄等等。我知道,這次“手術(shù)”不符合開放-關(guān)閉原則。

原文鏈接:http://www.cnblogs.com/hailibu/archive/2011/01/05/1926361.html

【編輯推薦】

帶您了解Oracle文件系統(tǒng)機(jī)制

詳解MongoDB實(shí)現(xiàn)存儲(chǔ)物理文件和SQUID加速

對(duì)DB2外部文件格式的闡述

DB2外部文件格式淺析

Oracle數(shù)據(jù)庫(kù)文件管理經(jīng)驗(yàn)談

 

責(zé)任編輯:彭凡 來(lái)源: 博客園
相關(guān)推薦

2010-04-22 15:34:16

Oracle海量數(shù)據(jù)

2014-04-30 13:21:06

2014-11-05 16:49:20

初志科技

2011-08-25 16:13:31

SQL Server批量替換數(shù)據(jù)

2011-03-28 08:47:46

海量數(shù)據(jù)庫(kù)管理中韓數(shù)據(jù)庫(kù)專家

2010-04-14 12:38:56

Oracle海量數(shù)據(jù)

2011-05-12 09:19:36

海量數(shù)據(jù)庫(kù)管理

2011-08-05 14:31:04

mysql_conve批量轉(zhuǎn)換MYSQL數(shù)據(jù)MYISAM

2010-04-19 10:50:01

Oracle轉(zhuǎn)移

2011-05-26 13:07:29

數(shù)據(jù)庫(kù)切換故障轉(zhuǎn)移

2011-09-01 10:10:56

OceanBase海量淘寶

2011-06-03 09:22:04

OracleOracle應(yīng)用服務(wù)器

2013-04-26 16:18:29

大數(shù)據(jù)全球技術(shù)峰會(huì)

2011-09-01 10:54:28

OceanBase數(shù)據(jù)庫(kù)海量

2011-03-28 17:07:14

海量數(shù)據(jù)庫(kù)

2010-09-13 15:31:14

sql server數(shù)

2019-11-22 08:05:01

數(shù)據(jù)庫(kù)mysql分區(qū)

2011-08-19 13:28:25

海量數(shù)據(jù)索引優(yōu)化

2011-08-04 18:00:47

SQLite數(shù)據(jù)庫(kù)批量數(shù)據(jù)

2011-05-26 15:53:59

數(shù)據(jù)庫(kù)更新維護(hù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)