格式導(dǎo)致的Excel導(dǎo)入sql出現(xiàn)異常的解決方法
本來(lái)程序是正常運(yùn)行的,有時(shí)候會(huì)因?yàn)橛脩舻膃xcel文檔沒(méi)有按要求的格式來(lái)做,才會(huì)出現(xiàn)一些異常情況。本以為這次也是一樣,后來(lái)拿到數(shù)據(jù)一看,并沒(méi)有發(fā)現(xiàn)什么異常,而且自己又照著做了一些數(shù)據(jù),竟然也會(huì)出現(xiàn)異常,只好懷疑是自己的程序有問(wèn)題了。
常言說(shuō)的好,最難找的是最后一個(gè)錯(cuò)誤,這話確實(shí)不錯(cuò)。我?guī)缀鮿?dòng)用了我所掌握的各種手段,程序上真的沒(méi)辦法找出有啥問(wèn)題了。在一個(gè)問(wèn)題上折騰久了,浪費(fèi)時(shí)間不說(shuō),還容易讓自己的情緒低落。到后來(lái),還是轉(zhuǎn)去懷疑用戶的數(shù)據(jù)有問(wèn)題,無(wú)意中做了一下格式調(diào)整,竟然發(fā)現(xiàn)異常不見(jiàn)了。
Excel的單元格格式設(shè)置十分豐富,數(shù)據(jù)一旦被格式化,那你所看到可能已經(jīng)不是廬山真面目了。比如貨幣格式,數(shù)據(jù)本身只是一串?dāng)?shù)字,并不會(huì)包含貨幣符號(hào)。
在我這個(gè)程序中,有一列數(shù)據(jù)為編碼,可能是字母和數(shù)字的混合,也可能是純數(shù)字,正常情況下,應(yīng)該設(shè)置成文本格式,可能因?yàn)榧償?shù)字在這種情況下會(huì)有一個(gè)錯(cuò)誤提示,也就是在單元格旁邊出現(xiàn)了一個(gè)黃色的感嘆號(hào),用戶大概覺(jué)得不對(duì),就設(shè)置成了郵政編碼這種特殊格式,數(shù)據(jù)看起來(lái)沒(méi)啥變化,但程序在識(shí)別的時(shí)候就出現(xiàn)了異常。還有一個(gè)字段是月份,程序要求在一位數(shù)前補(bǔ)0,如果格式設(shè)置為數(shù)字,前面的0就沒(méi)有了,所以必須設(shè)置為文本。如果自定義為:00,雖然在excel下顯示的數(shù)字和想要的一樣,但程序在處理時(shí)會(huì)當(dāng)成一個(gè)數(shù)字處理,結(jié)果也會(huì)不符合要求。
總結(jié)一下,對(duì)于要導(dǎo)入到數(shù)據(jù)庫(kù)的excel數(shù)據(jù),不要做格式化處理,保持原始的字符或數(shù)字格式是最明智的選擇。
相關(guān)文章
SQL處理多級(jí)分類(lèi),查詢(xún)結(jié)果呈樹(shù)形結(jié)構(gòu)
對(duì)于多級(jí)分類(lèi)常規(guī)的處理方法,很多程序員可能是用程序先讀取一級(jí)分類(lèi)記錄,然后通過(guò)一級(jí)分類(lèi)循環(huán)讀取下面的子分類(lèi)2012-08-08sqlserver查詢(xún)?nèi)サ糁貜?fù)數(shù)據(jù)的實(shí)現(xiàn)
這篇文章主要介紹了sqlserver查詢(xún)?nèi)サ糁貜?fù)數(shù)據(jù)的實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01mssql2005,2008導(dǎo)出數(shù)據(jù)字典實(shí)現(xiàn)方法
在項(xiàng)目開(kāi)發(fā)過(guò)程中會(huì)用到數(shù)據(jù)字典,本文將詳細(xì)介紹mssql2005,2008如何導(dǎo)出數(shù)據(jù)字典,需要了解更多的朋友可以參考下2012-11-11在數(shù)據(jù)庫(kù)‘master’中拒絕CREATE DATABASE權(quán)限問(wèn)題的解決方法
今天使用Linq To SQL,要求判斷數(shù)據(jù)庫(kù)是否存在,不存在是自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)。2011-10-10

SQL?Server數(shù)據(jù)庫(kù)的三種創(chuàng)建方法匯總

透明數(shù)據(jù)加密(TDE)庫(kù)的備份和還原

SQL Server2022安裝教程的實(shí)現(xiàn)步驟(圖文教程)

SQL server查看各表的索引(sql語(yǔ)句大全)

實(shí)現(xiàn)SQL分頁(yè)的存儲(chǔ)過(guò)程代碼