zoukankan      html  css  js  c++  java
  • csv到mysql数据库如何分割

          这两天修改一个取XML文件存入到CSV,然后再存入到mysql的bug,bug是XML文件里面有个name字段,存入CSV文件里面的时候我们用“|”,来分割字段。但是name里面有时候也有“|”,这样就出现了问题,存入数据库对不上字段了。
        开始的时候我试着把“|”换成“`”,但是测试发现名字中也有“`”,后来想加多两个分割符,无奈CSV导出只支持一位
       csv.writer(f, delimiter = ','), delimiter = ','只能是一位。
       再后来想干脆在名称后面都手动加上个“|”,例如本来是((“1”,“Test”,"OK"),("2","Test2","OK") 
      我加上“|”,变成((“1|”,"Test|",“OK”),("2|","Test2|",“OK”)),分割符是“,”,那么在CSV文件里面就成了
      1|,Test|,OK
      2|,Test2|,OK
    这样在导入mysql时候设置分割符为“|,”,就可以搞定了。
    愿望是美好的,现实是残酷的,还是失败。如果Name有“,”,CSV文件会变成
    1|,“Tes,t|”,OK
    2|,Test2|,OK
    存入数据库name变为““Tes,t|”,OK”,字段中有和分割符一样的,就会加上“”来区分。
    后来查CSV存入的方法,发现可以设置分割符 。见http://docs.python.org/2/library/csv.html?highlight=csv
    我设置为csv.writer(f, delimiter = ',',quotechar='"', quoting = csv.QUOTE_ALL)
    这样每个字段我都加上““”,然后以","隔开。
    在文件导入mysql的时候正好也有对应的分割符和去掉””“的方法。名称中出现【“,”】的概率不大
    见http://dev.mysql.com/doc/refman/5.1/en/load-data.html
    LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
      FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    “TERMINATED BY”就是以哪个字符分割
    ENCLOSED BY”就是字段被哪个字段包围
     
    大功告成!
     
  • 相关阅读:
    java基础
    C++菜鸟启动之旅--vc6.0使用教程详解
    第8章 Linux磁盘与文件系统管理
    IO(四)----对象的序列化
    IO(三)----序列流
    IO(二)----字符流
    IO(一)----字节流
    File类
    枚举类
    自动装箱和自动拆箱
  • 原文地址:https://www.cnblogs.com/dengkun/p/python.html
Copyright © 2011-2022 走看看