Grep на объединенном столе MySQL/Linux
Кажется, я не могу вывести grep -v "Africa" в этой таблице без ошибок, может кто-нибудь помочь мне с синтаксисом в Ubuntu?
Где-то есть ошибка, и в одной из моих стран не определен макрорегион (т. Е. В Америке, Африке, Азии, Европе), и я не могу ее найти. Мне нужно просмотреть эту объединенную таблицу, чтобы увидеть, в какой стране есть только субрегионы.
select country, group_concat(region) as regions from regions group by country;
(нижний колонтитул которого выглядит так)
| Ukraine | Eastern Europe,Europe
| United Arab Emirates | Middle East,Persian Gulf,Western Asia
| United Kingdom | Europe
| United States | Americas,North America
| Uruguay | Americas,South America
| Uzbekistan | Asia,Central Asia
| Vanuatu | Australasia,Melanesia,Oceania
| Venezuela | Amazon,Americas,Andes,South America
| Vietnam | Asia,East Asia,Indochina
| Virgin Islands | Americas,Caribbean
| Wallis and Futuna Islands | Australasia,Oceania,Polynesia
| Yemen | Middle East,Persian Gulf,Western Asia
| Zambia | Africa,Central Africa,East Africa,Southern Africa
| Zimbabwe | Africa,Central Africa,East Africa,Southern Africa
Я использую:
mysql -u root -pPASS "использовать отчеты"| mysql -u root -pPASS -e "выбрать страну, group_concat(region) в качестве регионов из группы регионов по стране;"| grep -v 'Африка'
И я получаю ошибку:
ОШИБКА 1049 (42000): неизвестная база данных "использовать отчеты" ОШИБКА 1046 (3D000) в строке 1: база данных не выбрана
1 ответ
mysql -u root -pPASS reports -e "select country, group_concat(region) as regions from regions group by country;" | grep -v 'Africa'
обо всем по порядку: вы неправильно выбрали базу данных. Имя базы данных является позиционным параметром; вам не нужно делать встроенный SQL-оператор.
во-вторых, вы не можете использовать mysql
команда в конвейере и первая команда влияет на вторую, поскольку соединение с базой данных закрывается до выполнения второго оператора; это совершенно разные связи. Используйте точку с запятой внутри оператора, если вам нужно несколько запросов. Альтернативная форма вышеупомянутой команды, которая делает это, будет выглядеть так:
mysql -u root -pPASS -e "use reports; select country, group_concat(region) as regions from regions group by country;" | grep -v 'Africa'