純真QQIP庫匯入到SQL Server例項詳解
但是很多人會說這有什麼難的呢?但是在實際的操作過程中出現了很多問題,比如:匯入到資料庫的時候報錯;還有就是匯入的記錄後發現記錄數有缺失;匯入時無法用,;等字元來區分欄位等。下面就讓我來告訴你如何成功匯入這378448條資料吧。
步驟1
點選上面的下載地址,解壓並執行ShowIP.exe,如下圖所示
(圖1:ShowIP.exe)
步驟2
點選上面的【解壓】按鈕,儲存檔案為QQIP.txt
步驟3
到vim.org中下載gvim72.exe程式,這裡為什麼需要下載這個檔案呢?因為如果使用SQL Server的匯入功能匯入檔案QQIP.txt的話會報錯,因為QQIP.txt檔案開啟一看感覺是使用了製表符\t來區分欄位,但是你錯了,無論是在SQL Server2000還是在SQL Server2005都無法識別得了,因為它是使用空格來調整的(見圖2)。既然無法直接匯入,那麼我們該如何使用特殊字元來替換這些空格呢?使用SQL Server2000的特定長度也是無法很好的區分開欄位。一般的文字工具,比如EMEditor就無法替換指定的空格,因為只能是全文替換,那麼當字元是:“我 是 聽風吹雨”,這這段字元中的空格也會給替換掉,而我們恰恰是不想見到這樣的情況的。vim就可以替換一行中的幾個空格。
(圖2:匯入QQIP.txt時無法識別列)
步驟4
下載好gvim72.exe後當然是安裝程式啦,安裝完畢後開啟雙擊gvim.exe進行操作。選擇檔案-開啟,選擇QQIP.txt檔案,按住Shift+分號鍵就可以進行執行命令了,輸入“%s/\s\+/$/ ”,按回車就會出現圖3的效果,這就已經替換了兩個字元之間的空格了,一共重複輸入3次。 把最下面的字元“IP資料庫共有資料$:$378448$條”刪除,存檔退出:wq。詳解:QQIP.txt有4列。分別是起始ip,結束ip,地區,說明。列之間用不等數量的空格間隔。為了將此文字檔案到入到SQL Server,需要處理掉這些空格。但是隻能處理掉前3列的空格,最後一列中的空格要保留。vi中輸入的命令意思是,把每一行第一個和其連續的空格替換成字元'$'。
(圖3:第一次執行命令後的效果)
步驟5
這樣就有了一個全新的QQIP.txt了,那麼接下來就是匯入到資料庫中了,因為資料中有些是沒有說明這一列的,所以使用SQL Server2000的【其它】中設定為“$”來分隔列,是沒有辦法做好的。所以這裡我們先把整個行做了一列匯入到資料中後再使用SQL進行字串分隔。需要注意的是圖5中設定欄位長度為500,如果你沒有設定導致報錯,那麼你就要先去資料庫中刪除這個表,之後再設定欄位長度為500並匯出,如果你沒有刪除表,那麼會一直報錯,因為已經有了這樣一個表了,即使最後報錯了。
(圖4:以一列作為匯入)
(圖5:設定欄位長度)
步驟6
現在已經有了一個叫做[QQIPbase]的表了,表的效果如圖6所示。使用SELECT count(1) FROM [QQIPbase]發現記錄數是378451條,和378448條不相等,再使用DELETE [QQIPbase] WHERE [列 0] =''刪除空白行。請確認資料庫的記錄數是否是:378448條。再執行分析器上執行下面的腳步,這個指令碼的作用就是把圖6中[列 0]欄位的字元進行分隔。
(圖6:剛匯入後的效果圖)
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->-- Author: <聽風吹雨>
-- Create date: <2010/05/27>
-- Description: <把字串@str以@split分隔符進行分隔,返回第@index次匹配的元素>
-- =============================================
CREATE FUNCTION [dbo].[Get_StrArrayStrOfIndex]
(
@str VARCHAR(5000), --要分割的字串
@split VARCHAR(10), --分隔符號
@index INT --取第幾個元素
)
RETURNS VARCHAR(5000)
AS
BEGIN
DECLARE @location INT
DECLARE @start INT
DECLARE @next INT
DECLARE @seed INT
SET @str=LTRIM(RTRIM(@str))
SET @start=1
SET @next=1
SET @seed=LEN(@split)
SET @location=CHARINDEX(@split,@str)
WHILE @location<>0 and @index>@next
BEGIN
SET @start=@location+@seed
SET @location=CHARINDEX(@split,@str,@start)
SET @next=@next+1
END
IF @location =0 SELECT @location =LEN(@str)+1
RETURN SUBSTRING(@str,@start,@location-@start)
END
相關文章
- 純真QQIP庫匯入到SQL Server詳解SQLServer
- SQL Server資料匯入匯出工具BCP詳解(轉)SQLServer
- .sql檔案匯入到sql server中SQLServer
- 資料庫例項 (SQL Server)資料庫SQLServer
- Sql Server資料庫開窗函式Over()的使用例項詳解SQLServer資料庫函式
- SQL Server海量資料匯入最快方法的詳解SQLServer
- Sql Server資料庫資料匯入到SQLite資料庫中Server資料庫SQLite
- 匯入xml檔案到SQL Server 2005XMLSQLServer
- SQL Server 2008匯入、匯出資料庫SQLServer資料庫
- 在SQL Server資料庫中匯入匯出資料SQLServer資料庫
- asp.net 操作Excel表資料匯入到SQL Server資料庫ASP.NETExcelSQLServer資料庫
- 如何將資料匯入到 SQL Server Compact Edition 資料庫中SQLServer資料庫
- 資料庫SQL Server DAC 匯入匯出資料到SQL Azure問題資料庫SQLServer
- 從Excel匯入sql serverExcelSQLServer
- SQL Server資料庫匯入匯出資料方式比較SQLServer資料庫
- 在SQL Server資料庫中匯入MySQL資料庫Server資料庫MySql
- ORACLE資料庫裡表匯入SQL Server資料庫Oracle資料庫SQLServer
- js將表格匯入到Execel表例項程式碼JS
- SQL server資料匯入OracleSQLServerOracle
- Excel 匯入 SQL Server 步驟:ExcelSQLServer
- SQL Server資料庫中Substring函式的用法例項詳解SQLServer資料庫函式
- (轉)excel和sql server的匯入匯出ExcelSQLServer
- [zt] SQL Server匯出匯入資料方法SQLServer
- expdp impdp 資料庫匯入匯出命令詳解資料庫
- 如何修改DTS 從sql server匯入到oracle每次提交行數SQLServerOracle
- SQL Server快速匯入資料分享SQLServer
- 從EXCEL匯入資料到SQL SERVERExcelSQLServer
- SQL Server海量資料匯入方法SQLServer
- curl庫pycurl例項及引數詳解
- SQL Server匯入、匯出、備分資料方法SQLServer
- SQL SERVER 和EXCEL的資料匯入匯出SQLServerExcel
- SPOOL 命令使用例項【oracle匯出純文字格式檔案】Oracle
- curl例項詳解
- sudo 詳解+例項
- 如何把 .csv 的檔案匯入資料庫SQL SERVER 中!資料庫SQLServer
- SQL Server資料庫啟動過程詳解SQLServer資料庫
- 例項詳解如何構建動態SQL語句SQL
- 將table表格內容匯入到word或者Excel程式碼例項Excel