2016-11-12 3 views
-3

Я ищу способ использования php или java для сравнения результатов двух запросов sql. Обычно я бы использовал dblink и написал sql-запрос, который обрабатывал бы полное внешнее соединение и проверял, что данные не идентичны.php или java сравнение данных

Однако, поскольку у двух баз данных нет настроек dblinks, и я не в том положении, где это будет так, я пишу в php, и я изучаю Java, поэтому теоретически я мог бы использовать это также.

Передняя часть приложения, которое я пишу, находится в php, веб-интерфейс обрабатывает логин пользователя и подключение к базе данных, он также может собирать данные. Затем либо другое приложение php должно будет просмотреть эти данные для идентичных записей, либо для передачи этого приложения в Java-приложение.

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

Long и Short это:

У меня есть 2 многомерные структуры данных, в которых уникальные ключи известны, но, как правило, более чем 1 колонка. Мне нужно определить любые отсутствующие или разные записи. Каким образом это может быть достигнуто с помощью php или java?

Cheers!

=========================================================================================================================================================== =========

Посмотрев на это несколько часов, вот где я сейчас.

Сначала я строю структуру данных на основе запроса к базе данныхA. Затем я создаю идентичную структуру данных из того же запроса в базе данныхB.

После того, как у меня есть обе эти коллекции, я динамически создаю глобальные таблицы temp, основанные на этой структуре, в одной из тестовых сред. Затем я вставляю собранные данные в соответствующие временные таблицы. Последний шаг будет состоять в том, чтобы провести сравнение данных в этих двух временных таблицах и вывести сравнение где-то - это не должно быть сложно.

Где я застрял сейчас, находится на INSERT во временных таблицах. Это мучительно медленно для> нескольких тысяч записей. Я прочел следующее: http://www.oracle.com/technetwork/articles/seliverstov-multirows-098120.html

Теперь я пытаюсь динамически создать пакет, который будет обрабатывать объемные вставки ... Я нахожусь на правильном пути?

ответ

0

Я вообще не знаю php, и у меня есть только нечеткая идея о java. С учетом этого:

Если вы смогли сделать все в одной базе данных, полное внешнее соединение было бы одним из самых неэффективных способов сделать это. Вместо этого наиболее эффективным способом является сделать UNION ALL, группу по всем столбцам и возвращать только группы с групповым счетом 1. То есть: если группа имеет счет 2, то та же строка присутствует в обе таблицы. (Вы упомянули уникальный ключ, который помогает - единственные дубликаты в UNION ALL будут такого рода, они не будут из одного и того же стола.)

Для более подробной информации, когда вы UNION ALL, вы можете добавить еще одну колонку для определения исходной таблицы, но группировка находится в «базовых» столбцах (не включая этот флаг).

Теперь: Я не знаю, как вы «приносите» результаты из ваших двух баз данных в php или java, но предположите, что это как-то текстовые файлы с одной строкой в ​​строке в выводах ваших запросов. На каждом языке должны быть свои средства обработки текста, в которых вы можете идентифицировать строки, которые идентичны, выполните подсчет, что я описал выше. Я знаю, как это сделать в Oracle SQL, а также с помощью инструментов UNIX; Я не знаю, как это сделать в php или java, но если вы знакомы на этих языках, возможно, вы это делаете.

Удачи вам!

+0

благодарит за ответ. Я обновил свой вопрос, потому что на данный момент я думаю, что я прибил концептуальное решение. См. Выше. Кроме того - спасибо за отзыв о профсоюзной группе, я об этом не думал, и в следующий раз я дам ему шанс, чтобы написать тест. – Jeff

Смежные вопросы