Лучшее место для данных .sql и способ их получения в базе данных MySQL? - PullRequest
0 голосов
/ 24 июня 2018

У меня есть путаница с .bash_profile, терминал, MAMP и MySQL Workbench.

Моя цель - загрузить файлы данных .sql в базу данных с терминала. Работа над учебными пособиями из книги Пола Дюбуа по MySQL. В Приложении A говорится о том, чтобы добавить параметр PATH в .bash_profile:

PATH=/usr/local/mysql/bin:/bin:/usr/bin:/usr/local/bin

Я добавил указанный выше путь к .bash_profile. Хотя в первой главе говорится, что папка примеров .sql-файлов, называемая (sampdb), может находиться где угодно. Итак, я попробовал:

export PATH="/Users/trevorpan/Documents/MySQL/sampdb:$PATH"

При добавлении этого PATH не найден файл с этой командой:

mysql> sampdb < create_grade_event.sql;

Это дало мне эту ошибку. И я чувствую, что это должно быть связано с путем, потому что повсюду переполнение стека, книга и онлайн-руководство по MySQL говорят, что приведенный выше является правильным синтаксисом.

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sampdb < create_grade_event.sql' at line 1

Я тоже пробовал:

mysql> source create_grade_event.sql;
ERROR: 
Failed to open file 'create_grade_event.sql', error: 2

Это тоже не сработало.

Теперь я думаю, что файлы должны просто помещаться в папку bin. Но я не уверен, должны ли они оставаться в папке (sampdb) или как.

Вот .bash_profile:

export PATH=/Applications/MAMP/bin/php/php7.1.12/bin:/usr/local/opt/gnu-tar/lib$
export MAMP_PHP=/Applications/MAMP/bin/php/php7.1.12/bin
export PATH="$MAMP_PHP:$PATH"
ICU_DIR=/usr/local/Cellar/icu4c/60.2/
EXT_DIR=/Applications/MAMP/bin/php/php7.1.12/lib/php/extensions/no-debug-non-zt$

if [ -f ~/.bashrc ]; then
        source ~/.bashrc
fi

export PATH="/usr/local/opt/m4/bin:$PATH"
PATH=/usr/local/mysql/bin:/bin:/usr/bin:/usr/local/bin

Спасибо.

EDIT

Я попытался перетащить файл в терминал и добился успеха.

mysql> source /Applications/MAMP/bin/sampdb/insert_member.sql 
Query OK, 0 rows affected (0.05 sec)

Query OK, 1 row affected (0.02 sec)

Query OK, 1 row affected (0.00 sec)

Query OK, 1 row affected (0.04 sec)

Query OK, 1 row affected (0.01 sec) etc. etc.

РЕДАКТИРОВАТЬ # 2

ах. Майкл,

Я попытался изменить каталог и получил эту ошибку. cd не может указывать на каталог, пока mysql загружен в терминал, поэтому я не уверен, какой метод вы используете для его загрузки из текущего каталога:

mysql> cd /Applications/MAMP/bin/sampdb;
ERROR 1064 (42000): You have an error in your SQL syntax; check the   manual that corresponds to your MySQL server version for the right syntax     to use near 'cd /Applications/MAMP/bin/sampdb' at line 1

Моя цель - указать местоположение папки и иметь возможность загружать файлы данных .sql без необходимости каждый раз вводить путь. Следующая запись имела похожую проблему, но, похоже, она никогда не решала простую команду импорта:

mysql> source create_grade_event.sql

Как импортировать файл SQL с помощью командной строки в MySQL?

Мое оригинальное название поста пыталось добраться до этого. Должны ли файлы данных .sql быть помещены в корзину? Если так, как я могу направить mysql, чтобы загрузить их с запросом как выше? Есть ли лучшее место для хранения файлов проекта .sql?

Спасибо.

1 Ответ

0 голосов
/ 24 июня 2018

Загрузка файла .sql в существующую базу данных выполняется следующим образом:

shell> mysql sampdb < create_grade_event.sql

Это очень отличается от этого:

mysql> sampdb < create_grade_event.sql;

... что действительно неверно.

Эта проблема не связана с вашим путем.

mysql> source create_grade_event.sql

... должно было сработать, но вы не указали, сделали ли вы это или это:

shell> source create_grade_event.sql;

... что также было бы неверно.В любом случае, «не работает» недостаточно подробно.

Здесь, как и в документации MySQL, shell> относится к приглашению вашей системной оболочки, которое обычно заканчивается на $.

...