教你如何解決整理SQL Server輸入的資料

來源:互聯網
上載者:User

我當前的項目中包括一個6200萬行、500多列的表。其中的資料來自SQL Server以外,它們到達的表中有一個標識主鍵,所有剩下的列以varchar(50)形式儲存。

問題解決

有許多日期以YYYYMMDD格式儲存,這是我注意到的第一個問題。我把這些日期改為整數列。然後我發現許多整數以varchar形式儲存,我把它們都改為整數。

接下來,許多列中包含“Y”或“N”或NULL。我們很可能會把它們轉換成位列,但這樣做存在一個重大的缺陷——你不能索引一個位列。因此,我把它們改成char(1) NULL。

此外,還有一些列中儲存有郵遞區號,前面一列為五個數字,後面一列為四個數字或NULL。我將它們分別改成char(5)和char(4),都為NULL。

我遇到的另外一個問題是,我無法明白相當一部分列中的內容。我把它們單獨處理,為varchar(50)。我希望確定每個varchar列中儲存的字串的最大長度,但要檢查6200萬行中的所有資料中不切實際的。因此,我選擇產生所有列的char或varchar列表。

SELECTCOLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, IS_NULLABLE FROMINFORMATION_SCHEMA.COLUMNSWHERE TABLE_NAME ='tblArthurClean'AND DATA_TYPE IN('char','varchar')

我複製結果表中的第一列,把它粘貼到記事本中(這是我最喜歡的文字編輯器,因為它具有優秀的尋找-替換功能。)要確定一個特定列中的最長資料,使用下列指令碼:

SELECT Max(Len( ColumnName )) FROM TableName

推而廣之,我希望遍曆列列表並產生我需要的聲明。我把需要的內容集中到一些格式化行中,用一個單獨的查詢來達到這個目的。

SELECT',Max(Len( ' + COLUMN_NAME + ' )) AS ' + COLUMN_NAME FROMINFORMATION_SCHEMA.COLUMNSWHERE TABLE_NAME = 'tblArthurClean'AND DATA_TYPE IN( 'char', 'varchar' )

列表A中是一個簡短的結果集。現在按照以下步驟執行:

Max(Len( Record_Length_Indicator_or_Filler )) AS Record_Length_Indicator_or_Filler,   Max(Len( Job_Number )) AS Job_Number,    Max(Len( Personal_or_Firm_Name )) AS Personal_or_Firm_Name,    Max(Len( Mailing_Address_Supplied_by_Customer

把結果集粘貼到一個文字編輯器中。

在第一行前面插入SELECT。

在檔案末尾增加FROM和表的名稱。

我在檔案開頭和末尾添加以下內容。

SELECT GetDate()GO

然後我刪除輸出結果第一行前面的逗號,把它儲存為一個查詢,載入再讓它運行。

我對它在我的伺服器上的效能非常滿意。它只用了一個小時多一點的時間計算出結果——對於分析一個6200萬行幾百列的表,時間不算太長。

得到的結果是一行結果集,我可以用它作為修改表結構和列名稱的指導,並把這些結果與原始表聯絡起來,做出相應的調整。

本文說明退一步思考如何能夠為你節省大量的輸入時間。我的座右銘是:“只要SQL能夠做的,它都應該完成。”

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.