MySQL:从脚本导入CSV文件

时间:2015-10-30 14:09:15

标签: python mysql csv

我有解析一些数据的脚本并将数据保存到Output.csv(Output.csv位于服务器上(/ tmp))然后我想将此Output.csv导入到MySQL现有表中。

        with open("/tmp/Output.csv", "w",0600) as text_file:
          text_file.write(csv)
          mydbs.connect()     
          mydbs.sqlcmd("""LOAD DATA LOCAL INFILE '/tmp/Output.csv' INTO TABLE my_table FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' ;""")
          text_file.close()
          os.remove("/tmp/Output.csv")

SQL查询以某种方式工作,例如,如果我将“my_table”更改为“my_tableasd”,我会收到错误:

  

ProgrammingError:(1146,“表'dbs.my_tableasd'不存在”)。

此外,我可以做任何类型的选择,但这种导入根本不起作用。我没有收到任何错误或警告......但是当我查看PHPmyAdmin时,没有导入任何数据。

我尝试通过PhpMyAdmin导入Output.csv,它可以工作..

我也尝试将local-infile = 1设置为my.cnf([mysql],[mysqld])但没有发生任何事情

非常感谢

3 个答案:

答案 0 :(得分:1)

在尝试导入文件之前关闭该文件。

答案 1 :(得分:0)

单独写作和处理:

with open("/tmp/Output.csv", "w",0600) as text_file:
    text_file.write(csv)

mydbs.connect()     
mydbs.sqlcmd("""
    LOAD DATA LOCAL INFILE '/tmp/Output.csv'
    INTO TABLE my_table
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n' ;
""")

os.remove("/tmp/Output.csv")

答案 2 :(得分:0)

问题解决了,我试图关闭数据库,它的工作原理。这很有趣,因为我从来没有在整个项目中这样做,而且我一直在使用dbs,但也许这个导入需要提交或者像那样

mydbs.close()