【问题标题】:MySQL LOAD DATA LOCAL INFILE example in python?python中的MySQL LOAD DATA LOCAL INFILE示例?
【发布时间】:2010-11-16 22:38:18
【问题描述】:

我正在寻找语法定义、示例、示例代码、wiki 等 从 python 执行 LOAD DATA LOCAL INFILE 命令。

我相信如果 mysqlimport 可用,我也可以使用它,所以欢迎任何反馈(和代码 sn-p),这是更好的路线。谷歌搜索在当前信息的方式中没有出现太多

这两种情况的目标都是相同的:自动将数百个具有已知命名约定和日期结构的文件加载到单个 MySQL 表中。

大卫

【问题讨论】:

  • 您是否使用任何特定的库,例如 mysql-python 或 sqlalchemy?
  • 我可以使用任何东西。现在,我只在脚本中导入 MySQLdb。

标签: python mysql load-data-infile


【解决方案1】:

嗯,用python的MySQLdb,我用这个:

connection = MySQLdb.Connect(host='**', user='**', passwd='**', db='**')
cursor = connection.cursor()
query = "LOAD DATA INFILE '/path/to/my/file' INTO TABLE sometable FIELDS TERMINATED BY ';' ENCLOSED BY '\"' ESCAPED BY '\\\\'"
cursor.execute( query )
connection.commit()

根据您的需要替换主机/用户/密码/数据库。这基于 MySQL 文档here,确切的 LOAD DATA INFILE 语句将取决于您的具体要求等(请注意,FIELDS TERMINATED BY、ENCLOSED BY 和 ESCAPED BY 语句将特定于您尝试的文件类型读入)。

【讨论】:

  • 在我的情况下,我只是错过了最后的 commit()。事实证明这是在 LOAD DATA 之后需要的,否则事务会丢失。
  • 我希望我可以为许多地方没有显示的connection.commit() 连根拔起两次
  • 没错。在大多数地方,没有提到 commit 这个东西,因为它根本不起作用。
  • 我还将参数添加到 MySQLdb.Connect(local_infile=True)
【解决方案2】:

您还可以通过在查询后添加以下行来获取导入结果:

results = connection.info()

【讨论】:

    猜你喜欢
    • 2012-10-05
    • 2012-06-01
    • 2020-07-25
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    相关资源
    最近更新 更多