【问题标题】:Unable to load data file into MySQL using pymysql - Can't find file无法使用 pymysql 将数据文件加载到 MySQL - 找不到文件
【发布时间】:2021-03-27 09:02:04
【问题描述】:

我正在尝试将分隔文件加载到我的 MariaDB 数据库中,但我不断收到以下错误:

pymysql.err.OperationalError: (1017, "找不到文件'b'/tmp/altered.txt''")

'b' 是从哪里来的?

当我从 MariaDB 提示符运行 LOAD DATA 命令时,它运行良好。

这是我的代码:

    print("Prepare to import file")
    cnopts=pysftp.CnOpts()
    cnopts.hostkeys = None

    with pysftp.Connection("8.8.8.8", username="osuser", password="ospassword", cnopts=cnopts) as sftp:
        with sftp.cd("/tmp"):
            sftp.put("C:/mydirectory/altered.txt")
    db = pymysql.connect("8.8.8.8", "dbuser", "dbpassword", "database", local_infile=True)
    cursor = db.cursor()
    print("importing file")
    cursor.execute('LOAD DATA LOCAL INFILE "/tmp/altered.txt" INTO TABLE daily FIELDS TERMINATED BY "|" LINES STARTING BY "148521" TERMINATED BY "\n" ')

    db.commit()
    cursor.close()

【问题讨论】:

    标签: python mysql mariadb pymysql


    【解决方案1】:

    LOAD DATA LOCAL INFILE 用于客户端(远程)机器上的文件。

    通过使用 LOAD DATA LOCAL INFILE,无需 sFTP 文件。

    print("Prepare to import file")
    
    db = pymysql.connect("serverIP", "user", "password", "database", local_infile=True)
    cursor = db.cursor()
    print("importing file")
    
    load_sql = "LOAD DATA LOCAL INFILE 'C:/directory/file.txt' INTO TABLE table FIELDS TERMINATED BY '|' LINES STARTING BY '11111' TERMINATED BY '\n';"
    print("SQL Statement loaded")
    
    cursor.execute(load_sql)
    
    db.commit()
    cursor.close()
    

    【讨论】:

      猜你喜欢
      • 2022-08-22
      • 2015-01-28
      • 1970-01-01
      • 2015-06-08
      • 1970-01-01
      • 2021-10-11
      • 2014-10-07
      • 1970-01-01
      • 2016-04-17
      相关资源
      最近更新 更多