解決將Excel表導入到SQL Server數據庫時出現Text was truncated or one or more characters had no match in the target

編寫python爬蟲程序能夠在電商、旅遊等網站上爬取相關評論數據,這些數據能夠用於詞雲製做、感情詞分析、提取關鍵詞等,也能夠將爬取下來的數據以本身的方式進行展現。評論數據爬取下來後,就要考慮怎樣入庫,能夠在爬蟲程序中編寫代碼直接入庫,也能夠將爬取到的數據存到Excel表格中,再將Excel表格導入到數據庫中。在將Excel表格導入到SQL Server數據庫時可能會出現不少錯誤,這裏要解決的錯誤是:Text was truncated or one or more characters had no match in the target code。這是因爲字段大小(size)設置太小,而數據中有超過這個size的記錄從而致使了截斷(truncate)。python

在SSMS中,能夠編寫SQL語句或使用菜單建立數據表,併爲表中的字段設置大小(size)。在將Excel表格導入到數據庫時,字段的大小又是怎麼肯定的呢?在Excel表格中,第一行的各列值做爲數據表(指數據庫中的table)中的各字段名,第二行之後的每一行的記錄將做爲數據表中的記錄。下面兩張圖反映了Excel表中數據和數據表中數據的對應關係。數據庫

景點概覽示例

景點概覽示例2

咱們在SSMS中打開「景點概覽」數據表的設計視圖,查看各字段的大小(size)。app

數據表中各字段的大小

Excel表在導入到數據庫後,字段的Data Type(數據類型)是根據Excel表中第二行(即第一條記錄)的值推出的。若是第二行對應列的那個值是數字,數據庫中相應字段的Data Type就是float型,若是值是字符,相應字段的Data Type就是nvarchar(255)。將數字都做爲float型,將字符都做爲nvarchar(255)型能夠避免一些截斷問題或高精度向低精度轉換等問題的出現。但若是某一個字段的Data Type被設置成了nvarchar(255),而表中又有記錄的值的大小超過了255,那麼就會出現文章開頭所說的truncate(截斷)問題。因此,將Excel表格的各條記錄中,最長的那條記錄放到Excel表格的第二行(即第一條記錄的位置),就能夠解決上面所說的問題python爬蟲


1、準備Excel表格數據框架

  Excel表格是能夠導入到SQL Server的,可是WPS表格是不行的。準備好Excel表格後,另存爲成合適的格式(Excel 2003或當前的Excel版本號,後面會用到)。這裏保存成Excel 2003(.xls)的格式。使用的數據是夫子廟景區的評論數據,首行只有一個字段「評論」。網站

  將Excel表格另存爲合適的格式

  夫子廟景區評論

2、在SSMS中建立數據庫並導入Excel表格spa

  打開SSMS,建立數據庫,右鍵數據庫-Tasks-Import Data,打開SQL Server Import and Export Wizard。設計

  右鍵數據庫導入Excel

  SQL Server Import and Export Wizard

  選擇Data source數據源爲Microsoft Excel表格,選擇準備好的Excel文件,在Excel version中選擇相應的版本號。已自動勾選的First row has column names表示Excel表格中首行做爲字段值。3d

  選擇要導入的Excel表格

  選擇導入Destination爲:SQL Server Native Client,Server name是當前SQL Server鏈接的服務名,應該是自動出現的,Authentication選擇登陸方式(Windows身份驗證或SQL Server身份驗證),Database選擇Excel表導入到的數據庫。日誌

  選擇要導入到的數據庫

  選擇所有導入或者編寫SQL語句部分導入(我也不是很明白..)。這裏選擇:Copy data from one or more tables or views,所有導入。

  所有導入或query選擇導入

  Next以後,選擇Excel表中的工做簿(這裏只有一個夫子廟)。

  選擇夫子廟表

  點擊Edit Mappings,能夠看到「評論」字段的Data Type被設置成了nvarchar(255)。這裏要注意,雖然在這裏Size這個值是能夠更改的,可是即便改成max後依然導入失敗(沒有解決)。

  查看夫子廟評論字段的size

  繼續後續步驟,執行導入。

  後續步驟1

  後續步驟2

  點擊完成,導入失敗,查看出錯日誌。

  報錯

3、整理Excel表格數據從新導入

  上面的Excel表格導入失敗了,在整理表格以前,要在SSMS中將失敗的數據表刪掉(雖然失敗了,可是數據表的框架已經建立了)。若是對錶格進行SELECT查詢,結果是空的。

  查詢到了空結果

  打開Excel表格,找到最長的那條記錄,並將其移動到第二行。

  找到最長的那條記錄

  將最長的那條記錄移到第二行

  從新導入到數據庫,此次導入成功了。

  查看夫子廟評論字段的size2

  導入成功

  在SSMS中,SELECT查詢剛纔導入進來的數據。Excel表格導入進來的數據表的名字是Excel表中數據簿的名字後+"$"符號。

  查詢剛纔導入進來的數據

4、總結

  在將Excel表格導入到SQL Server數據庫時若是出現:Text was truncated or one or more characters had no match in the target code 這個錯誤,將Excel表中最長的那條記錄移到第二行便可(即第一條記錄所在行)解決導入失敗的問題

  另外,SQL Server數據庫的導入導出功能還能夠實現數據庫中數據導出到Excel表或其餘一些數據源之間的相互導入導出,讀者能夠進行嘗試。

相關文章
相關標籤/搜索