csv文件导入mysql数据库,使用python的pymysql实现

一直不大懂csv怎么通过mysql图形化的界面直接导入,看了很多帖子,总觉得自己会了,但实际导入中又总是出问题。一个是如果直接一个csv导入自动创建新表,所有列的数据类型都是text好像,然后导入时间巨长;另一个是有时我直接卡在了data import 那里,mysql告诉我数据类型错误,我学网上说的把csv用记事本txt打开,改文字类型为中文GB2312后仍然报错(大概是我有些地方没弄明白orz)。所以干脆通过python的pymysql库将csv写入mysql吧。

import pymysql
import pandas as pd 

#pandas 数据处理
time_df=pd.read_csv(r'full_music_data.csv', sep = ',', header = None,low_memory=False)
k=time_df.loc[1:,:].values # 去掉原列名
k=k.tolist()

# mysql 批量导入
conn=pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='',db='dongman2',charset='utf8') # dongman2 是原来就有的一个数据库
cursor=conn.cursor()
cursor.execute('CREATE DATABASE IF NOT EXISTS MCM2021 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;')

cursor.execute('USE MCM2021;')
cursor.execute('DROP TABLE IF EXISTS `full_music_data`;')

cursor.execute('CREATE TABLE `full_music_data`(`artist_names` VARCHAR(500) NULL,`artists_id` VARCHAR(500) NULL,`danceability` FLOAT NULL,`energy` FLOAT NULL,`valence` FLOAT NULL,`tempo` FLOAT NULL,`loudness` FLOAT NULL,`mode` BOOLEAN NULL,`key` INT(11) NULL,`acoustiness` FLOAT NULL,`instrumentalness` FLOAT NULL,`liveness` FLOAT NULL,`speechiness` FLOAT NULL,`explicit` BOOLEAN NULL,`duration_ms` INT(11) NULL,`popularity` INT(11) NULL,`year` VARCHAR(50) NULL,`release_date` VARCHAR(50) NULL,`song_title` VARCHAR(500) NULL) ENGINE = InnoDB, DEFAULT CHARACTER SET = utf8mb4') # 第一张表
# 所有用到的列名 artist_names	artists_id	danceability	energy	valence	tempo	loudness	mode	key	acousticness	instrumentalness	liveness	speechiness	explicit	duration_ms	popularity	year	release_date	song_title (censored)	

cursor.executemany("INSERT INTO full_music_data VALUE(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)",k)
conn.commit()

cursor.close()
conn.close()

说实话,建表那步写列名写吐了,但能力有限只知道用这种笨办法。。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值