csv to mysql_csv文件存储到mysql

import pandas as pd

from sqlalchemy import create_engine

from sqlalchemy.types import NVARCHAR, Float, Integer, DateTime

import os

import chardet

#文件路径

file_path = 'D:\csv源\\'

#数据库

db_name = ''

#数据库用户名

db_un = ''

#数据库密码

db_pw = ''

#获取目标文件夹内所有后缀名为.csv的文件

def file_list():

list = []

path_list=os.listdir(file_path)

for filename in path_list:

if os.path.splitext(filename)[1] == '.csv':

list.append(filename)

return list

# 获取文件编码类型

def get_encoding(file):

# 二进制方式读取,获取字节数据,检测类型

with open(file, 'rb') as f:

return chardet.detect(f.read())['encoding']

# pandas类型和sql类型转换

def map_types(df):

dtypedict = {}

for i, j in zip(df.columns, df.dtypes):

if "object" in str(j):

dtypedict.update({i: NVARCHAR(length=255)})

if "float" in str(j):

dtypedict.update({i: Float(precision=2, asdecimal=True)})

if "int" in str(j):

dtypedict.update({i: Integer()})

elif "datetime" in str(j):

dtypedict.update({i: DateTime()})

return dtypedict

#写入数据库

def write_to_db(filePath, biaoName):

encoding = get_encoding(filePath)

# pandas读取csv文件

df = pd.read_csv(filePath, encoding=encoding)

dtypedict = map_types(df)

# 通过dtype设置类型 为dict格式{“col_name”:type}

df.to_sql(name=biaoName, con=con, if_exists='replace', index=False, dtype=dtypedict)

try:

# 连接设置 连接mysql 用户名 密码

engine = create_engine('mysql+mysqlconnector://' + db_un + ':' + db_pw + '@localhost:3306/' + db_name)

# 建立连接

con = engine.connect()

print('=====数据库连接成功=====')

#循环写入

for file in file_list():

write_to_db(file_path + file, file.split('.')[0])

print(file_path + file + ': 写入数据库成功!')

except Exception as e:

print('出错了!')

print(e)

else:

# 关闭数据库连接

con.close()

print('=====数据库关闭=====')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值