programing

pymysql을 사용하여 MySQL에 데이터 파일을 로드할 수 없음 - 파일을 찾을 수 없음

mytipbox 2023. 8. 6. 14:59
반응형

pymysql을 사용하여 MySQL에 데이터 파일을 로드할 수 없음 - 파일을 찾을 수 없음

구분된 파일을 MariaDB 데이터베이스에 로드하려고 하는데 다음 오류가 계속 발생합니다.

pymysql.err.작동 오류: (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()

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()

언급URL : https://stackoverflow.com/questions/65327709/unable-to-load-data-file-into-mysql-using-pymysql-cant-find-file

반응형