Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Astend
5 / 5 / 5
Регистрация: 20.07.2014
Сообщений: 196
1

Перенос данных между таблицами + проверка на Уникальность

15.06.2015, 17:16. Просмотров 650. Ответов 5
Метки нет (Все метки)

Есть 2 таблицы, table1(A,B,C,D,E) и table2(T,A,D,E,G,C,B,O,M)
Нужно перенести все данные из таблицы table1 в table2 при учете того что в table2 столбец E уникальный (UNIQUE).

Я делаю так
SQL
1
2
3
INSERT INTO table2(A,B,C,D,E)  
SELECT A,B,C,D,E
FROM table1
Проблема такая:
Нарушено "UQ_ColName" ограничения UNIQUE KEY. Не удается вставить повторяющийся ключ в объект...

Подскажите как выполнить такую задачку?

Добавлено через 15 минут
Я только что придумал и испытал 1 способ:
Удалить из таблицы table2 проверку уникальности(Unique), загнать туда все нужные значения(сделал успешно), сделать проверку на повторы, и добавить опять уникальность на указанное поле)))

Вот теперь другой вопрос, как по удалять одинаковые поля по заданому столбцу?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2015, 17:16
Ответы с готовыми решениями:

Интеллектуальный перенос данных между двумя таблицами (Merge)
В таблице А содержатся данные по адресным объектам. В контексте вопроса важно...

Перенос БД через резервную копию. Теряются отношения между таблицами
Доброго дня. Стоит задача перенести БД с одной машины (SQL 2012 express) на...

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

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

Перенос данных ms sql между серверами
доброе время суток... подскажите как можно реализовать: у меня есть 2 бд на...

5
Tucha01
0 / 0 / 0
Регистрация: 15.02.2013
Сообщений: 7
15.06.2015, 17:21 2
а все зависит, что тебе необходимо сделать с данными в table2
когда ты добавляешь в таблица 2 данный из table1, а данные Е уже есть он не знает что с ними делать вот и ошибка, если тебе надо обновить table2, то сначала найди одинаковые E в двух таблицах и удали из table2 все Е которые есть в table1

Добавлено через 1 минуту
Цитата Сообщение от Astend Посмотреть сообщение
Вот теперь другой вопрос, как по удалять одинаковые поля по заданому столбцу?
не понял?
0
iap
890 / 618 / 127
Регистрация: 27.11.2009
Сообщений: 1,838
15.06.2015, 17:23 3
Если дубли можно было просто проигнорировать (об этом не сказано ни слова!),
то надо просто в SELECTе использовать предикат NOT EXISTS().
Вставлять, чтобы потом удалять - это мазохизм какой-то!

Удалять поля - ALTER TABLE DROP COLUMN
Но, может, имеется в виду "удалять строки, дублирующие значение в поле"?
Подумайте хорошенько.
В принципе это всё - элементарно.
0
Tucha01
0 / 0 / 0
Регистрация: 15.02.2013
Сообщений: 7
15.06.2015, 17:24 4
SQL
1
2
3
DELETE table2
 FROM  table1 AS tab1 INNER JOIN
 table2 AS TAB2 ON tab1.e= TAB2.e
вроде как то так это сравнение двух таблиц и удаление всех данных Е в table2
0
iap
890 / 618 / 127
Регистрация: 27.11.2009
Сообщений: 1,838
15.06.2015, 17:26 5
Цитата Сообщение от Tucha01 Посмотреть сообщение
не понял?
T-SQL
1
2
WITH CTE(N)AS(SELECT ROW_NUMBER()OVER(PARTITION BY E ORDER BY E) FROM table2)
DELETE CTE WHERE N>1;
Но это продолжение самоистязаний и издевательство над сервером.
0
Astend
5 / 5 / 5
Регистрация: 20.07.2014
Сообщений: 196
15.06.2015, 17:47  [ТС] 6
Последний вопрос:
Выполнив запрос
SQL
1
2
3
4
SELECT column_name
FROM tablename
GROUP BY column_name
HAVING COUNT(*) > 1
Я получаю все дубликаты.

Как их удалить(Запросом)?

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

Согласен что убирать ограничение UNIQE глупо, потом добавлять, проверять, удалять, много лишних операций.

Возможно запрос
Цитата Сообщение от Tucha01 Посмотреть сообщение
SQL
1
2
3
DELETE table2
*FROM *table1 AS tab1 INNER JOIN
*table2 AS TAB2 ON tab1.e= TAB2.e
будет идеальным.
0
15.06.2015, 17:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2015, 17:47

Помогите!!! Очень нужна помощь... Перенос данных между двумя БД в SQL...Возникает ошибка.
На одном сервере есть две базы. Одна как источник ну а вторая соответственно...

Проверка на уникальность двух полей из двух связанных таблиц
Есть поле id_1 в таблице name1, а также поле id_2 в таблице name2. Таблица...

Связь между таблицами
Привет всем. мне необходимо создать бд, которая дает возможность...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru