您好,登錄后才能下訂單哦!
本篇文章為大家展示了Python中怎么將CSV文件導(dǎo)入MySQL數(shù)據(jù)庫,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
CSV文件導(dǎo)入數(shù)據(jù)庫一般有兩種方法:
1、通過SQL的insert方法一條一條導(dǎo)入,適合數(shù)據(jù)量小的CSV文件,這里不做贅述。
2、通過load data方法導(dǎo)入,速度快,適合大數(shù)據(jù)文件,也是本文的重點。
樣本CSV文件如下:
總體工作分為3步:
1、用python連接mysql數(shù)據(jù)庫,可參考如何使用python連接數(shù)據(jù)庫?
2、基于CSV文件表格字段創(chuàng)建表
3、使用load data方法導(dǎo)入CSV文件內(nèi)容
load data語法簡介:
LOAD DATA LOCAL INFILE 'csv_file_path' INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\\r\\n' IGNORE 1 LINES
csv_file_path 指文件絕對路徑
table_name 指表名稱
FIELDS TERMINATED BY ',' 指以逗號分隔
LINES TERMINATED BY '\\r\\n' 指換行
IGNORE 1 LINES 指跳過第一行,因為第一行是表的字段名
下面給出全部代碼:
下面給出全部代碼:
#導(dǎo)入pymysql方法
import pymysql
#連接數(shù)據(jù)庫
config = {'host':'',
'port':3306,
'user':'evdata',
'passwd':'',
'charset':'utf8mb4',
'local_infile':1
}
conn = pymysql.connect(**config)
cur = conn.cursor()
#load_csv函數(shù),參數(shù)分別為csv文件路徑,表名稱,數(shù)據(jù)庫名稱
def load_csv(csv_file_path,table_name,database='evdata'):
#打開csv文件
file = open(csv_file_path, 'r',encoding='utf-8')
#讀取csv文件第一行字段名,創(chuàng)建表
reader = file.readline()
b = reader.split(',')
colum = ''
for a in b:
colum = colum + a + ' varchar(255),'
colum = colum[:-1]
#編寫sql,create_sql負(fù)責(zé)創(chuàng)建表,data_sql負(fù)責(zé)導(dǎo)入數(shù)據(jù)
create_sql = 'create table if not exists ' + table_name + ' ' + '(' + colum + ')' + ' DEFAULT CHARSET=utf8'
data_sql = "LOAD DATA LOCAL INFILE '%s' INTO TABLE %s FIELDS TERMINATED BY ',' LINES TERMINATED BY '\\r\\n' IGNORE 1 LINES" % (csv_filename,table_name)
#使用數(shù)據(jù)庫
cur.execute('use %s' % database)
#設(shè)置編碼格式
cur.execute('SET NAMES utf8;')
cur.execute('SET character_set_connection=utf8;')
#執(zhí)行create_sql,創(chuàng)建表
cur.execute(create_sql)
#執(zhí)行data_sql,導(dǎo)入數(shù)據(jù)
cur.execute(data_sql)
conn.commit()
#關(guān)閉連接
conn.close()
cur.close()
出現(xiàn)的問題:
我是用win10系統(tǒng),代碼執(zhí)行時會出現(xiàn)以下錯誤
ERROR 1148 (42000): The used command is not allowed with this MySQL version.
原因是不支持命令 load data
解決方法:
需要更改下配置文件
在mysql安裝目錄中找到my.ini配置文件,復(fù)制以下內(nèi)容到文件中
[mysqld] #服務(wù)端配置
local-infle = 1
[mysql] #客戶端配置
local-infile = 1
上述內(nèi)容就是Python中怎么將CSV文件導(dǎo)入MySQL數(shù)據(jù)庫,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。