Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] /SQL/ Поиск значения в ячейках всех таблиц базы данных Oracle

Ответить
Настройки темы
Разное - [решено] /SQL/ Поиск значения в ячейках всех таблиц базы данных Oracle

Аватара для EvgeniyQQQ

Пользователь


Сообщения: 133
Благодарности: 21

Профиль | Сайт | Отправить PM | Цитировать


Добрый день!
Можно ли на SQL написать запрос к базе данных Oracle, который бы выполнил поиск строкового значения по ячейкам всех имеющихся таблиц и вывел в качестве результата список имён этих таблиц (в которых присутствует искомое значение) ?
Может у кого есть подобный уже готовый примерчик?
Или есть стандартные средства реализующие подобный функционал?
Заранее спасибо

-------
"Не соглашайся ни на что, кроме совершенства!" - Анонимный автор.
"Совершенство достигается только к моменту полного краха." - К.Н.Паркинсон.


Отправлено: 11:10, 06-08-2010

 

Студент


Сообщения: 445
Благодарности: 8

Профиль | Отправить PM | Цитировать


Любопытно, с какой целью такое потребовалось.

Я думаю, что стандартных средств в СУБД для решения такой задачи не существует. Полнотекстовый поиск - это задача несколько иная, чем управление БД.
Зато есть поисковые движки типа Thinking Sphinx. Посмотри вот тут: http://sphinxsearch.com/

-------
*Origin: Lots of people talking, few of them - no... (2:5020/****.**)


Отправлено: 15:10, 07-08-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


EvgeniyQQQ, встроенными путями такое сделать не получится. Необходимо минимум 2 цикла - первый берет список таблиц из указанной базы, второй - список полей в таблице . Ну и далее уже в циклах - выборка.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:40, 09-08-2010 | #3


Аватара для EvgeniyQQQ

Пользователь


Сообщения: 133
Благодарности: 21

Профиль | Сайт | Отправить PM | Цитировать


noname00.pas, есть у нас PLM-система, она использует СУБД Oracle. Я проводил эксперименты с помощью внешнего приложения, вносил и удалял некоторую информацию... это приложение обращается к базе не напрямую, а через саму PLM. Так вот, я удалил идентификатор одного объекта PLM с помощью внешнего приложения. Пока PLM была запущена, всё работало, но стоило её перезапустить, как она стала ругаться, что не может найти объект с удалённым мной идентификатором и при этом вылетает (завершает свою работу). Вернуть идентификатор на место с помощью внешнего приложения я не могу, так как PLM не запущена. Остаётся только внести его назад в базу в ручную... но вот засада... таблиц много.... очень много, а где хранятся идентификаторы не известно С помощью поиска я хочу попытаться найти таблицу в которой хранятся идентификаторы.

-------
"Не соглашайся ни на что, кроме совершенства!" - Анонимный автор.
"Совершенство достигается только к моменту полного краха." - К.Н.Паркинсон.


Отправлено: 12:07, 09-08-2010 | #4


Аватара для EvgeniyQQQ

Пользователь


Сообщения: 133
Благодарности: 21

Профиль | Сайт | Отправить PM | Цитировать


Delirium, спасибо за ссылки. Они натолкнули меня на правильные мысли
Так как в SQL я чайник и разбираться нет времени, то написал поиск используя симбиоз Java и SQL.
Вот сам код, может кому пригодится:
Код: Выделить весь код
public static void main(String[] args) 
{
	final String SEARCH_STRING_OF_CELL = "Искомый текст в ячейке";
	final String HOST = "localhost";
	final String PORT = "1521";
	final String BASE_ID = "wind";
	final String USER = "guest";
	final String PASSWORD = "guest";
		
	try
	{
		Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
		Connection myCon = DriverManager.getConnection("jdbc:oracle:thin:@" + HOST + ":" + PORT + ":" + BASE_ID, USER, PASSWORD);
		Statement mySt = myCon.createStatement();
			
		System.out.println("Выполняю поиск...");
		ResultSet rs = mySt.executeQuery("select * from user_tables");
		    
		//Формируем список имён таблиц
		List<String> listTables = new ArrayList<String>();
		while (rs.next()) listTables.add(rs.getString(1));
		    
		for(int i = 0; i<listTables.size(); i++)
		{
			ResultSet rs1 = mySt.executeQuery("select * from " + listTables.get(i));
			while(rs1.next())
			{
				for(int j = 1; j<rs1.getMetaData().getColumnCount() + 1; j++)
				{
					Object cell = rs1.getObject(j);
					if((cell instanceof String) && ((String)cell).compareToIgnoreCase(SEARCH_STRING_OF_CELL) == 0)
					{	
						System.out.println("Имя таблицы \"" + listTables.get(i) + 
								"\", имя столбца \"" + rs1.getMetaData().getColumnName(j) +
								"\", значение \"" + cell + "\"");
					}
				}	
			}
		}
			
		mySt.close();
		myCon.close();
	}
	catch(Exception e)
	{
		e.printStackTrace();
	}
	System.out.println("Поиск завершен!");
}

-------
"Не соглашайся ни на что, кроме совершенства!" - Анонимный автор.
"Совершенство достигается только к моменту полного краха." - К.Н.Паркинсон.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:46, 09-08-2010 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] /SQL/ Поиск значения в ячейках всех таблиц базы данных Oracle

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Загрузка - Планировщики меняющие значения в ячейках КМОП ОЗУ. elibom Microsoft Windows 2000/XP 3 24-05-2009 20:28
MySQL - [решено] Выборка данных со всех таблиц, которые начинаются с test_ Artem-Samsung Программирование и базы данных 2 31-03-2009 15:42
MSFT SQL Server - Размер файла базы данных MS SQL Odessit Программирование и базы данных 7 29-04-2007 07:35
SQL и базы данных Ivian Программирование и базы данных 3 18-03-2005 12:50
SQL, базы данных и ASP anridir Вебмастеру 2 23-09-2002 07:07




 
Переход