створити базу даних mysql з одним рядком в bash


24

Чи можливо створити порожню базу даних з одним рядком команди в bash?

Мої спроби новачка не вдалися:

mysql -uroot $(create database mydatabase;)

Я в кінцевому підсумку повинен

  • mysql -uroot
  • create database mydatabase;
  • exit;

Відповіді:


32

@ Відповідь Nitrodist спрацює, але це надмірна проблема. Клієнт командного рядка MySQL підтримує дуже зручний -eкомутатор, наприклад:

mysql -uroot -e "create database 'foo'"

Звичайно, можна замінити будь-який дійсний SQL.


Вибачте, я змінив свою відповідь після ще кількох досліджень.
Нітродіст

5
Цитати не потрібніmysql -uroot -e "create database foo"
IanVaughan

1
Так, використання додаткових одинарних котирувань дало мені анкету ERROR 1064 (42000) at line 1: 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 ''foo'' at line 1. Без них це прекрасно працює. Дякуємо @IanVaughan
leymannx

14

Відповідно до документації MySQL, команда mysqlможе приймати команди зstdin

shell> mysql -uroot < script.sql > output.tab

Ви можете скористатися процесною заміною для цього:

shell> mysql -uroot <(echo "create database mydatabase;") 

або ви можете просто конвеєр до stdinз mysqlнормально:

shell> echo "create database mydatabase;" | mysql -uroot

Не можу це перевірити особисто, але я думаю, що це має спрацювати.

Редагувати: Ще одним варіантом є використання -eпараметра, вказаного тут , як-от так:

shell> mysql -uroot -e "create database mydatabase;"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.