【问题标题】:How can I run bulk insert query using pymysql?如何使用 pymysql 运行批量插入查询?
【发布时间】:2016-08-29 06:58:12
【问题描述】:

如何使用 pymysql 运行插入查询脚本文件?

我为大数据制作了一个插入查询脚本文件。 (数据行数:50,000)

文件名为 bulkinsert.sql,它包含如下查询。

INSERT INTO test( dt, user, usertype, ip) VALUES 
("2016-05-01", 3103945, , 1, "175.195.249.217"), 
("2016-05-01", 3103946, , 1, "175.195.249.218"), 
("2016-05-01", 3103947, , 1, "175.195.249.219"), 
................
................
................
("2016-05-01", 3104000, , 1, "175.195.249.500");

我使用了pymysql,但是找不到直接插入或运行sql文件的方法。如下所示。

cursor.execute(bulkinsert.sql)

当我阅读他们的指南时,我必须阅读 sql 语句并执行它。但是我的数据行数太多而无法读取。他们有什么方法可以在 pymysql 中导入或运行 sql 脚本吗?

【问题讨论】:

    标签: python mysql database bulkinsert pymysql


    【解决方案1】:

    如果您不需要执行的输出,也许 subprocess 是一种替代方法。 PS:将Password关键字替换成你自己的。

    from subprocess import Popen, PIPE
    process = Popen(['mysql', db, '-u', user, '-pPassword'],
                    stdout=PIPE, stdin=PIPE)
    output = process.communicate('source ' + filename)[0]
    

    【讨论】:

    • 感谢您帮助我。数据库不在本地数据库时是否有效?
    • @Bethlee 是的,通过-h REMOTE_SERVER_IP添加远程服务器ip选项
    • 我检查了这个选项。谢谢你。我还有一个问题,我的本地电脑没有安装 mysql。有用吗?
    • 我使用 popen 应用您的评论。速度很快,但必须在本地电脑上安装 mysql 连接器
    • 非常感谢@Hooting~我可以解决我的问题,使用 open("bulkinsert.sql").read() 并执行它。 stackoverflow.com/questions/1932298/…您的解决方案对我也很好。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 2013-10-14
    • 2019-07-15
    • 2011-02-01
    相关资源
    最近更新 更多