Я надеюсь искать свой каталог запросов SQL и для самых распространенных таблиц базы данных во всех файлах. Для этого я надеюсь использовать grep
для изоляции этих имен, но я не могу вполне выяснить регулярное выражение для получения по запросу просто имен таблиц.
Я фигурирую для изоляции таблиц, я ищу строку текста после слов ОТ или СОЕДИНЕНИЯ.
Я надеющийся люди могут помочь мне создать прочь из этого, но в настоящее время мои grep операторы просто находят случаи этих слов, но как я дергаю за ниточку, непосредственно продолжающуюся эти ключевые слова?
grep -R "FROM" | grep -R "JOIN"
Я вытянул некоторые демонстрационные запросы от Google и сделал пару sql файлы со следующими данными в них, например, цели:
<час> file1.sql
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
SELECT Customers.CustomerName, Orders.OrderID
INTO CustomersOrderBackup2013
FROM CustomersOriginal
LEFT JOIN Orders
ON Customers.CustomerID=Orders.CustomerID;
file2.sql
-- Dumping data for table `user_details`
INSERT INTO `user_details` (`user_id`, `username`, `first_name`, `last_name`, `gender`, `password`, `status`) VALUES
(1, 'rogers63', 'david', 'john', 'Female', 'e6a33eee180b07e563d74fee8c2c66b8', 1);
первой вещью, которую Вы ищете, является операция ИЛИ для grep:
$ grep 'INTO\|FROM\|JOIN' *.sql
file1.sql:FROM Orders
file1.sql:INNER JOIN Customers
file1.sql:INTO CustomersOrderBackup2013
file1.sql:FROM CustomersOriginal
file1.sql:LEFT JOIN Orders
file2.sql:INSERT INTO `user_details` (`user_id`, `username`, `first_name`, `last_name`, `gender`, `password`, `status`) VALUES
, Который получит все строки из исходных файлов. Затем давайте использовать sed для вытаскивания имен таблиц:
$ grep 'INTO\|FROM\|JOIN' *.sql | sed -r 's/.*?(FROM|INTO|JOIN)\s`?([^` ]*).*/\2/g'
Orders
Customers
CustomersOrderBackup2013
CustomersOriginal
Orders
user_details
Наконец, давайте устраним дублирующиеся таблицы:
$ grep 'INTO\|FROM\|JOIN' *.sql | sed -r 's/.*?(FROM|INTO|JOIN)\s`?([^` ]*).*/\2/g' | sort -u
Customers
CustomersOrderBackup2013
CustomersOriginal
Orders
user_details