使用notepad++/excle快速將cvs文件轉換為insert語句技巧以及注意點


使用notepad++/excle快速將cvs文件轉換為insert語句技巧以及注意點

業務場景

最近nc項目經理從第三方弄來了一個300w行的csv文件,讓導入數據庫做處理,出現了下列問題:

csv文件中的字段分隔符,默認使用,進行分隔的,insert的字段個數必須和插入字段的個數對應上,錯誤的原因就是:存儲的問題子當中,有用,分隔的內容,導入的時候導致多一個字段,每次導入一部分就出錯

注意事項/問題:

  • csv文件不能用excle編輯保存,編輯后,出現格式亂碼,可使用notepad++編輯保存;

  • 拆分后的文件也不宜過大,否則進行字符替換的時候,編輯器會卡死;

  • 由於使用轉為insert語句導入的原因,空字符串在導入的過程中容易出錯,所以講空用""或者''將內容包含住;

  • 特被注意轉義字符,即\+特殊字符,在字段值末尾,導致sql語句結構破壞,sql語句不可用

  • 文件過大,excle/notepad++均無法打開,使用linux工具對文件進行按行拆分

    #將文件上傳到linux中,使用下面命令,total.csv為需要拆分的文件,company為拆分后的文件名
    split -l 100000 total.csv company
    

一、使用notepad++轉換sql語句

1.使用正則表達是將最后一個行最后的字符替換為";

​ "$"找到最后一個字符;

2.將最后一個字符替換為);,及sql語句的結束語句;這一步和上一步雖然都是在末尾插入,但是要分開,猜測應該是字符轉義的原因;

前兩步效果:

​ 將,替換為",",因為csv文件中如果為空值,會直接用,隔開,不會區分字段的分割,

​ 將開頭換為"(,記得要使用轉義字符,不然無法替換

​ 再將開頭換為insert語句

​ 最后結果:

二、使用excle替換

這次不用在意文件的格式,因為最后是保存sql語句,利用excle的公式在文檔最后一行插入公式,生成需要的sql語句

下面是公式

=CONCATENATE("INSERT INTO `new1_copy`(`DWMC`, `DWDZ`, `ZZJGDM`, `DWDH`, `DWDJ`, `DWXZ`, `XZQY`, `AQZRR`, `DWLX`, `AQZRRSFZ`, `AQZRRDH`, `JZMJ`, `DWZSX`, `GIS_X`, `GIS_Y`, `Deleted`) VALUES ('",A1,"','",B1,"','",C1,"','",D1,"','",E1,"','",F1,"','",G1,"','",H1,"','",I1,"','",J1,"','",K1,"','",L1,"','",M1,"','",N1,"','",O1,"','",P1,"');")

如果數據量很大,下拉很慢,雙擊公式單元格左下角:

會自動往下生成


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM