2013-07-23 6 views
2

Мое требование сравнить два табличных данных в одной базе данных и сохранить необычные данные в отдельной таблице с данными отношений в одной базе данных.Сравнение данных между двумя таблицами с одной базой данных

Как сравнить данные этих таблиц?

Чтобы сравнить их любые инструменты и можем ли мы хранить незарегистрированные данные в отдельной таблице с помощью любого инструмента? Я забыл сказать одну вещь, что две таблицы имеют одинаковые данные, но разные имена столбцов, что означает, например, первую таблицу, имеющую 20 столбцов и 2, а таблицу с 50 столбцами, но в этом 4 столбцах сопоставляются данные с различным количеством строк и разными именами столбцов в каждой таблице. На основе этих столбцов сопоставление данных мне нужно найти строки и сохранить в другой таблице

+2

Инструмент называется SQL. Вы должны показать нам хотя бы схему ваших таблиц. –

+0

Я хочу, чтобы вы хотели что-то вроде 'INSERT INTO sep_table (SELECT .. FROM .. WHERE NOT IN (SELECT ids FROM other_table)' или что-то вроде 'INSTERT INTO sep_table (SELECT .. JOIN WHERE first.col <> second.col) 'Не могу быть более конкретным, потому что ваш вопрос не совсем конкретный. –

+0

что на самом деле вы хотели достичь? Есть ли две таблицы содержат одинаковые данные? – Nithesh

ответ

1

Попробуйте этот запрос, Я думаю, что его работа

 
insert into relational(r1,r2,r3,....rn) 
(select s1,s2,s3,...sn from 
    information info where info.informationcity not in (select customercity from customer) 
    and info.informationstate not in (select customerstate from customer)) 
+0

одно сомнение в том, что мне нужно создать реляционную таблицу раньше или она будет автоматически создана? если мне нужно создать какие колуны я должен дать? – stpdevi

+0

вам нужно создать это до выполнения вышеуказанного запроса и какие столбцы вы хотите взять из таблицы данных, которые должны быть указаны в этой инструкции вставки, и они должны быть в реляционной таблице с другими именами, также применимыми, но типы данных должны быть одинаковыми. –

+0

Спасибо. очень jagadeesh – stpdevi

0

Предполагая, что обе таблицы имеют одинаковую структуру
Быстро и грязно?

;WITH cte AS (
SELECT 1 AS OriginTable, * 
FROM OriginTable1 
UNION SELECT 2 AS OriginTable, * 
FROM OriginTable2 
) 
SELECT {put here the list of all your columns} 
INTO [YourDeltaTable] 
FROM cte 
GROUP BY {put here the list of all your columns} 
HAVING COUNT(*) = 1 
3

В качестве альтернативы написания SQL-скрипт, можно скопировать целые результаты из обеих таблиц в файл .csv, а затем использовать выигрыш слияния для сравнения два:

http://winmerge.org/downloads/

I использовали эту технику в прошлом, когда сравнивали массовые объемы данных, и она работала достаточно хорошо.

-1

Вот простой пример, который предполагает, что ваша таблица структуры и тот же

DECLARE @a table (
    val char(1) 
); 

DECLARE @b table (
    val char(1) 
); 

INSERT INTO @a (val) 
    VALUES ('A'), ('B'), ('C'); 


INSERT INTO @b (val) 
    VALUES ('B'), ('C'), ('D'), ('E'); 

DECLARE @mismatches table (
    val char(1) 
); 

INSERT INTO @mismatches (val) 
SELECT val -- All those from @a 
FROM @a 
EXCEPT  -- Where not in @b 
SELECT val 
FROM @b; 

INSERT INTO @mismatches (val) 
SELECT val -- All those from @a 
FROM @b 
EXCEPT  -- Where not in @b 
SELECT val 
FROM @a; 

SELECT * 
FROM @mismatches 
2

Это может быть достигнуто в T-SQL с не много усилий. Однако в вашем вопросе вы просили инструмент для этого. Если вы просто хотите приобрести инструмент для этого, на моей работе мы используем инструменты Redgate для развертывания кода с теста на производство, и я считаю, что если бы вы были немного креативными, вы могли бы получить SQL Data Compare Tool, чтобы делать то, что вы просите для.

selecting the tables and seeing the differences

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

+0

привет благодарю вас за решение. После того, как он состоит из двух таблиц с одинаковой базой данных, он не показывает никаких флажков – stpdevi

+0

, пожалуйста, см. Мой скриншот, прикрепленный к вопросу – stpdevi

+0

Если вы щелкните правой кнопкой мыши и выберите выбрать ключ сравнения, он предложит вам меню всех сравниваемые данные. В столбце ключа сравнения он позволит вам выбрать способ сравнения таблиц. [Пример] (http://i.imgur.com/0v4E1qf.png). Это помогает? – jwhaley58

0

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

 
insert into TargetTable(list_of_columns) 
(select list of columns from 
    Table1 t1 join Table2 t2 
on (t1.common_column != t2.common_column)) 

ГКЗА подсчет списка столбцов и целевой столбец подсчет списка должен быть равен

+0

привет, я попробовал это до того, как моя проблема - это обе таблицы, не имеющие одного столбца, то есть имена столбцов полностью разные, а также количество списков и количество столбцов списка целей не равно – stpdevi

+0

Можете ли вы сообщить мне, сколько столбцов в источнике и сколько столбцов в целевом –

+0

одна таблица 52 столбца и другая таблица 25 столбцов только два столбца данных аналогичны тем, которые являются городом и состоянием, но названия столбцов (имена) отличаются друг от друга (таблица 1 имеет обычную и другую информацию о таблице) – stpdevi

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