Python将一组.csv文件加载到MySQL中

Ranchoddas shyamaldas chanchad

我正在使用以下命令将多个.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()
马丁·彼得斯(Martijn Pieters)

您需要将文件名内插到SQL字符串中。您只是将文字文​​本发送file_name到服务器。您可以使用该str.format()方法,{}然后可以用您选择的变量替换任何占位符。

您还必须循环中缩进tryexceptfor

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python将一组.csv文件加载到MySQL中

来自分类Dev

使用python 2.7将csv文件加载到mysql中

来自分类Dev

使用批处理将csv文件加载到mysql中?

来自分类Dev

将csv文件加载到列表中

来自分类Dev

使用Rubygems将CSV文件数据加载到Mysql中

来自分类Dev

如何将单列csv文件加载到mysql中的特定列

来自分类Dev

使用Rubygems将CSV文件数据加载到Mysql中

来自分类Dev

将CSV文件数据加载到表中时出现MySQL错误

来自分类Dev

有效地将csv文件加载到mysql中

来自分类Dev

使用sklearn将.csv文件加载到python中

来自分类Dev

无法将GCS中的CSV文件加载到bigquery中

来自分类Dev

如何将CSV文件加载到QTreeView中?

来自分类Dev

将CSV加载到MySQL Workbench表中

来自分类Dev

Python中的一组常数

来自分类Dev

将数据加载到文件MySQL MacOS中

来自分类Dev

熊猫将一组中的行与上一组中的行进行比较

来自分类Dev

根据Python中的一组索引将列表拆分为子列表

来自分类Dev

将CSV加载到MySQL选择列

来自分类Dev

将.RData文件加载到Python中

来自分类Dev

将 csv 文件中的行加载到 Python 中的热图轴

来自分类Dev

将一组给定的文件提取到存储库

来自分类Dev

将文件多播到一组用户

来自分类Dev

将Outlook中的联系人导入一组

来自分类Dev

将一组对象添加到 reducer 中

来自分类Dev

如何将这样的 [[a,b,c],[d,e,f].........] 数据从 csv 文件加载到 python 中?

来自分类Dev

如何将一组时间从CSV文件中的不同日期分组

来自分类Dev

如何通过脚本标签将数据(CSV文件或类似文件)加载到页面中?

来自分类Dev

熊猫将最新日期文件夹/ CSV文件加载到数据框中

来自分类Dev

使用Java将CSV文件加载到MySQL服务器

Related 相关文章

热门标签

归档