批量导入 CSV 到mysql

准备好mysql

  1. 安装

    brew install mysql

  2. 进入数据库 mysql -uroot -pmima

  3. 创建数据库 create database db_name

  4. 创建表

    这里我直接使用 Sequel Pro 用这个连接上数据库并且创建。

    注意

    由于 QQ 群里面有很多表情符号,所以

    1. 数据库编码必须为 utf8mb4 这个编码支持表情符号
    2. 由于 每个 CSV 的第一行全是中文,所以 QQ 群号的第一行也是中文。那么用int 就会报错。有两个处理办法。
      1. 全部用 varchar , 导入后再把群号这一列的 中文 删除,然后再改成int。 这里我选择了这个方法,因为数据量较少,另外第二条的方法找了一下没有找到。
      2. 删除 CSV 第一行的中文,再导入到 数据库内。

CSV 示例

群名称,群号,群人数,群上限,群主,地域,分类,标签,群简介
北京社会管理职业学院,214931458,647,1000,594310098,河北省 廊坊市,学习.考试 | 其他,,进群改名字□级别-系别-名字,北京社会管理职业学院期待你们的加入,因你们而精彩、
北京社会管理职业学院,423832248,479,500,2056310913,北京市,品牌.产品,菁菁校园 | 校官方群,北京社会管理职业学院校友群!轻松聊天,同校交友,外校勿进!广告勿进!
北京社会管理职业学院,534258366,332,500,1352005503,北京市,同事.朋友 | 同学,,
北京社会管理职业学院,201059474,488,500,694543240,河北省 廊坊市,学习.考试 | 高考,北京社会管理职业 | 北京 | 社会 | 管理 | 职业学院 | 高考 | 单招,群里会及时更新全国各地单招的招生简章,请新生们注意观看群公告进群的新生需将名字格
北京社会管理职业学院,466783390,481,500,649176126,河北省 廊坊市,品牌.产品,,北京社会管理职业学院
北京社会管理职业学院,495091722,87,200,1115641719,北京市,同事.朋友 | 同学,,
北京社会管理职业学院,36081817,305,1000,919157,北京市,同事.朋友 | 同学,,在这里大家都是领导``北京社会管理职业学院
北京社会管理职院新生,543961025,44,200,2672625326,河南省 洛阳市,兴趣爱好 | 运动,北京社会管理职院 | 大学生 | 新生,欢迎 北京社会管理职业学院    的同学们进入本群的这个集体大家庭,为使大家有个绿色 诚
北京社会管理职业学院,251582755,136,500,820634081,河北省 廊坊市,同事.朋友 | 同学,母校 | 校友 | 北社管,母校留给我们的东西不多,也就仅此而已/爱你(进群标注原因)
北京社会管理职业学院,630339095,2,500,392619439,河北省 廊坊市,行业交流,,北京社会管理职业学院部落群、校友交流群。
北京社会管理职业学院,667445540,1,500,2740824228,,同事.朋友 | 同学,北京 | 北京社会管理职院 | 新生群 | 校友群 | 总群 | 交流经验,北京社会管理职业学院校群,本群有问必答,校友群欢迎你的加入。加入本群的同学们,请
北京社会管理职业学院,211519581,3,200,1285880836,山东省 青岛市,学习.考试 | 高考,高考 | 招生 | 养老,北京社会管理职业学院春季招生开始
北京社会管理职业学院,111634393,6,500,95352187,北京市,同事.朋友 | 亲友,兄弟连,欢迎校友加入,新生老生均可加入,欲找群管理员,有意的可以给在线管理员留言
北京社会管理职业学院,67576478,5,500,659607952,北京市,兴趣爱好 | 影视,,
北京社会管理职业学院,107370265,4,200,1208066874,,,,
北京社会管理职业学院,346101963,2,200,1876419682,江西省 九江市,学习.考试 | 考研,,
北京社会管理职业学院,275824512,2,200,870958435,,同事.朋友 | 同学,,
北京社会管理职业学院,345526573,1,200,1374068234,北京市,学习.考试 | 其他,,
北京社会管理职业学院,67972683,1,200,2401803993,北京市,同事.朋友 | 同学,交友 | 校友 | 广告勿进,小女子顺带征个婚http://51230.com/u/23509841.html非诚勿扰,谢谢!

完整代码

#coding=utf-8
import MySQLdb
import csv
import os
import codecs

def Read_CSV():  # 批量读取当前文件夹的 CSV 文件
    guojia = [x for x in os.listdir(".") if os.path.isfile(x) and os.path.splitext(x)[1]=='.csv']
    for csvname in guojia:
        filename = os.path.join(os.getcwd(), csvname)
        with open(csvname, 'r', encoding='utf-8') as f:
            reader = csv.reader(f)
            for item in reader:
                i = tuple(item)
                print(i)
                save_to_mysql(i)


def save_to_mysql(i):  #链接数据库 QQ_QUN 并且用 UTF8MB4
    conn= MySQLdb.connect(
            host='localhost',
            port = 3306,
            user='root',
            passwd='nihao52cons',
            db ='QQ_QUN',
            charset= 'utf8mb4'
            )
    cur = conn.cursor()
    # cur.execute("insert into student values('群名称', '群号', '群人数', '群上限', '群主', '地域', '分类', '标签', '群简介')")

    sqli = "insert into 职业 values(%s,%s,%s,%s,%s,%s,%s,%s,%s)"
    cur.executemany(sqli,[i])

    #以下3个为例行操作。关闭。
    cur.close()    
    conn.commit()
    conn.close()

def main():
    Read_CSV()

if __name__ == '__main__':
    main()
Comments
Write a Comment