1. 程式人生 > >Excel匯入SQL SERVER,數字和字元會被系統自動置為NULL的解決方法

Excel匯入SQL SERVER,數字和字元會被系統自動置為NULL的解決方法

          在將Excel資料匯入SQLServer過程中,SQLServer會做出判斷,是採用float型還是nvarchar型來接受資料,當資料來源為數字和字元的組合時,系統會出現將型別設定為float,從而將混合方式的資料設定為NULL的情況,為此有以下解決方法。

    方法一:

    將這個欄位的所有資料在Excel中設定為文字格式,剛才說了本來就是希望匯入SQLServer時成為字元型,但結果令人失望,不起作用。

【該方法不可行】

    方法二:

    最終網上搜索到了答案:混合資料型別列的強制解析——IMEX=1
使用 IMEX=1 選參之後,只要取樣資料裡是混合資料型別的列,一律強制解析為 nvarchar/ntext 文字。當然,IMEX=1 對單一資料型別列的解析是不影響的。

SELECT * INTO Table08 
FROM OpenDataSource
('Microsoft.Jet.OLEDB.4.0','Data Source="E:/1.xls";Extended properties="Excel 8.0;HDR=Yes;IMEX=1;"')...[Sheet1$]

該方法可行

    注:
    1.這條語句是在SQLServer查詢分析器中執行,並且要選擇好資料庫,否則會把要匯入的資料往別的資料庫中導了。
    2.Table08是資料匯入後在SQLServer中的表名,屬於新建,所以請確認在匯入資料前資料庫中沒有該表名,否則會提示已存在同一表名。
    3.Data Source,不要連在一起寫,中間有一空格。
    4.E:/1.xls,為Excel所在的絕對路徑和資料庫名。
    5.Excel 5.0,根據不同的Excel版本寫5.0或8.0或其它。
    6.IMEX=1,是轉換成文字輸入的意思,非常重要,如果沒有,就跟你直接匯入效果一樣。
    7.Sheet1是表名,千萬別看到語句中有$就在表名後加上$,因為$是語句要加的,別畫蛇添足。