Объединение двух таблиц на разные серверы баз данных

-5

Мне нужно присоединиться к двум столам Companies и Customers.

Таблица Companies находится в MS SQLServer, а таблица Customer - в MySQL Server.

Каков наилучший способ достижения этой цели?

спросил(а) 2021-01-25T15:40:38+03:00 5 месяцев назад
1
Решение
63

Если я правильно понимаю, вам нужно объединить таблицы в SQL Server, а не в код, потому что тег - sql.

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

Здесь у вас есть объяснение, как связать сервер MySQL с сервером MSSQL.

После того, как вы успешно свяжете эти серверы, ваш синтаксис прост:

SELECT 
[column_list]
FROM companies
JOIN [server_name].[database_name].[schema_name].[table_name]
WHERE ...

Имейте в виду, что при доступе к таблицам, которые существуют на связанном сервере, вы должны написать имена из четырех частей.

ответил(а) 2021-01-25T15:40:38+03:00 5 месяцев назад
45

Попробуйте следующее:

1 извлеките данные из таблицы компаний из SQL-сервера и сохраните необходимые столбцы в формате ArrayList<HashMap<String,String>>.

Поэтому создание строк в качестве индекса arraylist и HashMap в качестве пары ключевых значений, отвечающих за имена столбцов. Ключ: имя столбца и значение как значение столбца этой строки.

2 Затем вытащите данные из таблиц Customer, добавляя предложение where, путем преобразования данных с вашей первой карты в формат, разделенный запятыми. Таким образом создается фильтр, похожий на соединение в SQL.

Добавьте данные в одни и те же данные набора результатов, как и раньше, и не перекрывайте имена столбцов в HashMap.

когда вам нужно получить доступ к столбцу 5-й строки7, тогда вы напишите

ArrayList.get(4).get( "column7");

Логика дана, пожалуйста, реализуйте ее самостоятельно.

ответил(а) 2021-01-25T15:40:38+03:00 5 месяцев назад
45

Чтобы запросить 2 базы данных, вам нужно 2 отдельных подключения. В этом случае вам также понадобятся отдельные драйверы, поскольку у вас есть база данных MSSQL и MySQL. Поскольку вам нужны отдельные соединения, вам нужны два отдельных запроса. В зависимости от того, что вы хотите сделать, вы можете сначала получить свои Companies а затем сделать запрос для Customers WHERE company = 'some value from COMPANIES' (или наоборот).

Вы также можете просто получить каждую строку из обеих таблиц в своих списках и сравнить эти списки в своем коде, а не использовать запрос.

ответил(а) 2021-01-25T15:40:38+03:00 5 месяцев назад
45

Выберите компании из DB1 Выбор клиентов из DB2 Поместите их в Map<WhatToJoinOn, Company> и Map<WhatToJoinOn, Customer> Присоединитесь к клавишам карты, создав List<CompanyCustomer>

ответил(а) 2021-01-25T15:40:38+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема