我正在使用以下命令将多个.csv文件加载到Mysql数据库中,但是在(IDLE窗口)上没有出现错误,并且数据未加载
这是错误的脚本
#!C:\Python27\python.exe
import MySQLdb
import os
import string
# Open database connection
db = MySQLdb.connect (host="localhost",port=3307,user="root",\
passwd="gamma123",db="test")
cursor=db.cursor()
l = os.listdir(".")
for file_name in l:
print file_name
cursor=db.cursor()
if (file_name.find("DIV.csv")>-1):
#Query under testing
sql = """LOAD DATA LOCAL INFILE file_name \
INTO TABLE system_work \
FIELDS TERMINATED BY ',' \
OPTIONALLY ENCLOSED BY '"' \
LINES TERMINATED BY '\r\n' \
IGNORE 1 LINES;;"""
try:
# Execute the SQL command
cursor.execute(sql)
# Commit your changes in the database
db.commit()
except:
# Rollback in case there is any error
db.rollback()
# disconnect from server
db.close()
但是,当我尝试使用以下python脚本加载单个文件时,则可以正常工作。请帮忙....
#!C:\Python27\python.exe
import MySQLdb
import os
import string
# Open database connection
db = MySQLdb.connect (host="localhost",port=3307,user="root",\
passwd="gamma123",db="test")
cursor=db.cursor()
#Query under testing
sql = """LOAD DATA LOCAL INFILE 'Axle.csv' \
INTO TABLE system_work \
FIELDS TERMINATED BY ',' \
OPTIONALLY ENCLOSED BY '"' \
LINES TERMINATED BY '\r\n' \
IGNORE 1 LINES;;"""
try:
# Execute the SQL command
cursor.execute(sql)
# Commit your changes in the database
db.commit()
except:
# Rollback in case there is any error
db.rollback()
# disconnect from server
db.close()
您需要将文件名内插到SQL字符串中。您只是将文字文本发送file_name
到服务器。您可以使用该str.format()
方法,{}
然后可以用您选择的变量替换任何占位符。
您还必须在循环中缩进try
和except
块for
:
sql = """LOAD DATA LOCAL INFILE '{}'
INTO TABLE system_work
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\\r\\n'
IGNORE 1 LINES;;"""
for file_name in l:
print file_name
if file_name.endswith('DIV.csv'):
try:
cursor = db.cursor()
cursor.execute(sql.format(file_name))
db.commit()
except Exception:
# Rollback in case there is any error
db.rollback()
该cursor.execute()
方法将传递sql
带有file_name
插值变量的字符串。在{}
第一行(部分LOAD DATA LOCAL INFILE '{}'
)将通过价值来代替file_name
传递SQL语句到MySQL之前。
我还简化了文件名测试;如果文件名以。结尾,大概就足够了DIV.csv
。
注意,使用该mysqlimport
实用程序可能会更容易。您可以通过以下方式获得完全相同的结果:
mysqlimport --fields-terminated-by=, --fields-optionally-enclosed-by=\" \
--local --lines-terminated-by=\r\n --user=root --password=gamma123 \
test *DIV.csv
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句