Загрузка CSV в CloudSQL - PullRequest
       13

Загрузка CSV в CloudSQL

1 голос
/ 28 июня 2019

У меня есть скрипт Powershell, который в настоящее время загружает некоторые данные из CSV на сервер MySQL 5.1.73, расположенный на локальном компьютере Linux (он отлично работает). Я редактирую этот код для загрузки данных в базу данных Google CloudSQL 5.7.14.

Я включил флаг 'local_infile on' в экземпляре базы данных CloudSQL и при попытке запустить код выдает ошибку:

 Exception calling "Fill" with "2" argument(s): "The used command is not allowed with this MySQL version"

Когда я SSH в экземпляр CloudSQL, используя синтаксис:

mysql --local-infile=1 -u root -h XX.XX.XX.XX -p

и попытка загрузить CSV все работает нормально. Если я не использую:

--local-infile=1

флаг Я получу похожую ошибку.

Мой вопрос: как мне инициировать соединение с Powershell, чтобы по существу включить тот же флаг '--local-infile = 1', если это вообще возможно?

Моя текущая строка подключения выглядит так:

 $constring="server=XX.XX.XX.XX;uid=USERNAME;pwd=PASSWORD;database=DATABASE;Pooling=False;"

Я искал в интернете последние несколько часов и пробовал несколько флагов, пытаясь угадать это, и у меня не получилось.

Спасибо за помощь.

1 Ответ

1 голос
/ 28 июня 2019

Если вы хотите загрузить CSV-файлы в ваш экземпляр Cloud SQL (MySQL), есть несколько способов сделать это, пожалуйста, обратитесь к документации , чтобы оценить, какой из них лучше подходит для вашего случая.

Я предполагаю, что в этом случае вы используете оператор «LOAD DATA LOCAL INFILE», если ваш CSV не соответствует требованиям формата.

В соответствии с документацией Mysql вы получаете сообщение об ошибке «Используемая команда недопустима с этой версией MySQL», когда «возможность LOCAL отключена на стороне сервера или клиента» (находится в конце страницы).

Что подтверждает то, что вы обнаружили, вам нужно включить этот флаг на стороне клиента.Я искал вокруг и не нашел прямой способ указать флаг в методе подключения PowerShell.Не могли бы вы попробовать эти альтернативы?:

  1. Установите "local-infile = 1" в my.cnf или в файле конфигурации MySQL в вашей системе (если вы используете Linux, он должен быть примерно /etc / mysql / my.cnf)

  2. Используя вместо сценария PowerShell скрипт Python3, коннектор Python Mysql разрешает флаг "allow_local_infile".

...