整理一下前兩天工作中遇到一些最基礎(chǔ)的問題
成都創(chuàng)新互聯(lián)主要從事網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)琿春,十年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575
因為工作需求,把Excel表導(dǎo)入數(shù)據(jù)庫并,然后SQL語句進行業(yè)務(wù)邏輯操作,最后把結(jié)果集導(dǎo)出表格。當(dāng)我聽到這個任務(wù)時候,第一感覺沒什么難度,結(jié)果實力打臉。
問題一:Excel表格導(dǎo)入
解決方案一:
按照我學(xué)習(xí)過的思路,進行邏輯導(dǎo)入,轉(zhuǎn)換成后綴.csv之后文件,打開cmd
格式:
sqlldr userid=system/password control='d:\test.ctl';--這句命令先不執(zhí)行
我們編輯需要執(zhí)行的腳本test.ctl
load data
infile 'e:\text.csv'--.csv的位置
replace into table test--導(dǎo)入數(shù)據(jù)庫的表名稱,三個參數(shù)(replace替換)append(追加)insert(插入空表)
fields termindted by ','--字段分隔符
(a1,a2,a3)--導(dǎo)入的列明
這時候我們在運行第一條指令便可成功插入,本人測試插入失敗,有可能表明錯誤。
解決方案二:
利用PL/SQL進行解決:
工具中輸入select * from test where 1=2 for update
出現(xiàn)如下圖,打開小鎖,我們需要先把Excel內(nèi)容全選復(fù)制,表格中的類型每一列,一定與數(shù)據(jù)庫表類型一樣,否則一定會失??!選中我們數(shù)據(jù)庫整個行,粘貼上去就完成,別忘了打小綠色的對號,然后再提交,不能忘!!個人在領(lǐng)導(dǎo)的指導(dǎo)下學(xué)習(xí)完成,雖然按不是難題,沒有真正的實操一切都等于零!
解決方案三:
利用PL/SQL自帶的導(dǎo)入工具來完成(不啰嗦)
問題二:Excel表格默認(rèn)科學(xué)計數(shù)法問題
那么導(dǎo)入之后驚奇的發(fā)現(xiàn),一列number類型的值竟然不對而且表現(xiàn)形式為科學(xué)計數(shù)法,原因到底在哪里?經(jīng)過排查并非轉(zhuǎn)換過程中出現(xiàn)了錯誤,而是原本Excel表格中就是科學(xué)計數(shù)法!經(jīng)過百度和學(xué)習(xí)知道當(dāng)默認(rèn)數(shù)值超過12位以上,默認(rèn)是用科學(xué)計數(shù)法來顯示的,也試過了很多方法,那么簡單方便高效的方法分享給大家,總結(jié)如下
解決方案一:
鼠標(biāo)選中右擊,選擇設(shè)置單元格,然后自定義類0(文本郵編等都可以),確定就可以變換成數(shù)字,不過有時候后面多出來幾個零,但是我們相對來就可以進行操作!后綴.xls和.xlsx都可以那么.csv的保存之后再次打仍然為科學(xué)技術(shù)法未解決!
問題三:再次導(dǎo)入一個新表格時候發(fā)現(xiàn)日期格式(數(shù)字類型)和我數(shù)據(jù)庫類型不一樣
解決方案:
1、轉(zhuǎn)換日期格式需要在本列后面加上一空列
2、選中日期列,數(shù)據(jù)-->分頁-->分隔符號-->選擇空格-->選中日期-->選擇YMD,點擊完成轉(zhuǎn)換成功,如下圖
轉(zhuǎn)換前:
轉(zhuǎn)換后:
問題四:工作完成后備份一定不可忘記,數(shù)據(jù)量小的時候,那么高效方便導(dǎo)出的方法,邏輯備份無疑最好的選擇,總結(jié)如下
解決方案:
利用數(shù)據(jù)庫邏輯備份exp(CMD命令)
格式:
exp system/tiger@Databases FILE=$path FULL=Y;
解釋:
導(dǎo)出整個庫需要權(quán)限提示是否獲取權(quán)限
整篇的文章看上去沒有太大的技術(shù)含量,工作中讓人寸步難行,一起總結(jié)分享累計經(jīng)驗決定成敗