RDS MySQL НАГРУЗКА ДАННЫХ НА МЕСТНЫЙ ИНФИЛЬ.Ошибка 1148. Используемая команда не разрешена с этой версией MySQL - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь импортировать данные программно, используя Python Python в экземпляр Amazon RDS MySQL 8.0.13.

Когда я запускаю следующий код через SQLYog, он отлично работает.

LOAD DATA LOCAL INFILE 'D:/path/to/my/files/myfile.csv' IGNORE INTO TABLE my_table
FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n'

Однако, когда я запускаю его на той же машине, используя MySQL Workbench или через Python, я получаю ошибку:

Ошибка 1148. Используемая команда не разрешена с этой версией MySQL

Я предполагаю, что это как-то связано с моей строкой соединения или драйвером ODBC.

Может кто-нибудь сказать мне, есть ли какие-либо известные ошибки с этой командой, когда она будет работать через одного клиента (SQLYog), но недругой (MySQL Workbench / Python).

Спасибо

1 Ответ

0 голосов
/ 30 января 2019

ОК - я нашел ответ.

Похоже, что опция подключения local_infile = 1 доступна только для определенных подключений в Python.

Я все еще не могу найти, как включитьlocal_infile = 1 для MySQL Workbench или для pyodbc, однако модуль pymysql допускает эту опцию.

import pymysql
try:
    my_conn = pymysql.connect(
        host='myserver',
        port=3306,
        db='mydatabase',
        user='myuser',
        password='somethingsecret',
        local_infile=1
    )

    my_cursor = my_conn.cursor()
    my_cursor.execute("LOAD DATA LOCAL INFILE 'D:/path/to/my/files/myfile.csv' IGNORE INTO TABLE my_table FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\\r\\n")
    my_conn.commit()

except pymysql.Error as msg:
    exit(print(msg))
...