Невозможно загрузить CSV в чистую установку MySQL - пробовал решения для ошибок безрезультатно

avatar
Technobrat
1 июля 2021 в 21:02
61
1
0

Мне нужно создать локальную установку MySQL для разработки Shiny App Dashboard для аналитики (язык R, мои знания SQL базовые, для простых громоздких запросов, которые я затем настраиваю в R).

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

  1. Я загрузил установщик Windows сообщества MySQL и установил полная версия на мою машину со всеми настройками по умолчанию.
  2. Я успешно создал сервер (все настройки по умолчанию) и назвал его в MySQL Workbench
  3. Затем я успешно создал одну тестовую таблицу со всеми правильными именами столбцов и т. д.
    CREATE TABLE servername.test_table( col1 text,
col2 int,
col3 int,
col4 text,
...
col40 text);
  1. Используя приведенный ниже код, я попытался загрузить CSV в servername.test_table
LOAD DATA INFILE 'D:\Dropbox\R-Projects\SQL\SAMPLE DATASETS\DATA1.csv'
INTO TABLE servername.test_table
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS; 

Проблема возникает, когда я пытаюсь загрузить csv в нужную таблицу, я получаю:

Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

После некоторых исследований вместо того, чтобы вмешиваться в ограничения доступа, в которых у меня нет опыта и полной настройки БД. Простым возможным решением было бы просто хранить файлы в каталоге, который позволяет secure_file_priv.

Я выполнил команду SQL:

SHOW VARIABLES LIKE "secure_file_priv";

Получил каталог: C:\ProgramData\MySQL\MySQL Server 8.0\Uploads и сохранил копию CSV-файла в этом каталоге, а затем запустил следующее, чтобы попытаться загрузить CSV:

LOAD DATA LOCAL INFILE 'C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\DATA1.csv'
INTO TABLE servername.test_table
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS; 

После вышеизложенного следующей ошибкой стала новая ошибка:

Error Code: 2068. LOAD DATA LOCAL INFILE file request rejected due to restrictions on access.

Вернувшись к исследованиям, я начал пытаться возиться с настройками и командной строкой MySQL.

Проверил настройку сервера для local_infile с SHOW GLOBAL VARIABLES LIKE 'local_infile'; в качестве запроса в MySQL Workbench, результат был: Value - ON что, насколько я понимаю, должно было позволить вторую попытку с использованием LOAD DATA LOCAL INFILE сработать, это не так.

Ссылка ниже предлагает добавить следующее в файл my.ini.

ОШИБКА 2068 (HY000): Запрос файла LOAD DATA LOCAL INFILE отклонен из-за ограничений доступа

[client]
loose-local-infile=1
[mysqld]
local_infile=1

Я сделал это, а также перезапустил службу MySQL80, чтобы проверить, реализована ли она... Попытка снова загрузить CSV безрезультатно.

Может ли кто-нибудь помочь мне загрузить этот CSV-файл, чтобы я мог сосредоточиться на своей реальной работе? Я занимался этим в течение 2 дней, и, похоже, это распространенная проблема, но я не видел и «тупого» пошагового устранения неполадок, как я представил.

Если я могу попросить, пожалуйста, попробуйте и предоставить пошаговый подход к устранению этой проблемы. Навыки управления сервером MySQL почти нулевые, я привык иметь доступ к БД и просто выполнять запросы.

Извините за длинное сообщение, но я хотел быть как можно более подробным, чтобы показать, что я пробовал большинство решений, которые я нашел, но безуспешно.

(не уверен, что это уместно: при использовании рабочей станции Threadripper 3960x с 128 ГБ оперативной памяти, Windows 10 Pro, MySQL была полностью установлена ​​на том же диске, что и Windows 10 Pro)

Спасибо за уделенное время.

Источник
Dale K
1 июля 2021 в 21:04
1

MySQL <> SQL Server - пожалуйста, исправьте свои теги.

Shadow
1 июля 2021 в 21:07
0

Если вашей целевой rdbms является сервер ms sql, то зачем тратить время на mysql? Mysql также имеет несколько отличий в синтаксисе и функциях от сервера ms sql, поэтому все, что вы разрабатываете на сервере mysql, вы не сможете использовать на сервере ms sql.

Joachim Isaksson
1 июля 2021 в 21:09
0

Если вы ищете минимальные синтаксические отличия от SQL-сервера, MySQL ничем не лучше, чем PostgreSQL. Скорее всего, вам будет гораздо лучше просто использовать SQL Server Express (microsoft.com/en-us/sql-server/sql-server-downloads).

Will B.
1 июля 2021 в 21:19
1

Вы пробовали использовать экранированные обратные косые черты или преобразовывать их в косые черты? LOAD DATA LOCAL INFILE 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\DATA1.csv' или LOAD DATA LOCAL INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/DATA1.csv'

Technobrat
2 июля 2021 в 05:21
0

@УиллБ. да, я сделал, безуспешно. Спасибо за предложение.

Technobrat
2 июля 2021 в 05:23
0

@Shadow Спасибо за ваш вклад, я не знал об этом. У меня сложилось впечатление, что MySQL имеет тот же синтаксис, что и MS SQL Server для запросов. Я решил просто развернуть базу данных в базе данных Azure.

Technobrat
2 июля 2021 в 05:25
0

@JoachimIsaksson Я не знал о разнице в синтаксисе запросов. Я решил развернуть все на Azure.

Ответы (1)

avatar
Technobrat
2 июля 2021 в 05:32
0

Самым быстрым решением было просто развернуть в Azure сервер MS SQL и использовать расширение Azure Data Studio под названием «Импорт SQL Server». Для тех, кто просто хочет сервер для тестирования и должен импортировать файлы CSV, которые также используют заключенные речевые метки. Развертывание было довольно быстрым по сравнению с попыткой устранения неполадок моей локальной установки.