2014-05-07 134 views
0

我想將舊數據複製到新數據庫。我有我的舊數據庫中的地址列與數據類型ntext,但在新的數據庫我必須使用3列放置地址(地址1,地址2,地址3與數據類型nvarchar(60))如何在基於字符串長度的SQL Server中拆分字符串

我怎樣才能拆分字符串舊數據庫到我的新數據庫?

例如:從舊的數據庫 查詢:

`select address from client` 

result : 

Jl. Taman Crystal 2 Blok TC 2 No.79 RT.001/018, Cluster Crystal Residence, Summarecon Serpong, Pakulonan Barat - Kelapa Dua 

回答

1

這真的取決於你需要多少數據要處理。

對於小套(比如小於10K左右)我會做這樣的:

  1. 創建空間臨時表一個鍵的舊地址和3個新的地址。
  2. 將地址複製到登臺表中。
  3. 爲不同部分編寫一個「提取」查詢,並逐個運行它們中的每一個。例如,以獲得地址1列,你可以使用左功能最多的位置,

    INSERT INTO STAGE (address1) 
    SELECT LEFT(address,location(address,',')) 
    

一旦你完成了這些即席查詢,你可以運行結果一些查詢,並確定你對此感到滿意。如果您遇到問題,請修改您的查詢並重新運行。

一旦你對舞臺感到滿意,將它複製到你的決賽桌上。

對於更大的集合,我會編寫一個具有良好錯誤檢查,報告和異常表等的程序。一個真正的解析器和ETL。對於您可以查看和手工操作的少量數據來說,這並不值得。