![]() |
|
MS SQL. INSERT в таблицу, игнорируя ошибки дублирования ключей | ☑ | ||
---|---|---|---|---|
0
SeiOkami
14.03.19
✎
15:29
|
Добрый день
Имеем копию базы. В ней есть большие таблицы (например, регистр накопления с 3 млрд строк или документ с 1.5 млрд). Имеется дополнительно специальная копия, которая актуализируется раз в неделю. Хочется скриптом периодически переливать новые данные из этой "основной" копии в собственную. Переливать только нужные таблицы. Чтобы не производить полное обновление базы. Если переливать скриптом SQL данные с указанием периода, то могут произойти ситуации, когда в таблице документов уже есть такая ссылка. В такой ситуации скрипт INSERT просто упадёт в ошибку. Есть ли возможность указать INSERT, который будет игнорировать ошибки при вставке. Т.е., если там уже есть строка с данными по этому ключу, то наплевать - идём дальше переносить данные. Понятно, что таким образом будет не точная копия и где-то могут быть пробелы, но на это пойти готовы. |
|||
1
trad
14.03.19
✎
15:54
|
отфильтровать источник разве нельзя?
|
|||
2
trad
14.03.19
✎
15:56
|
insert into t1
from t2 left join t1 on t1.key = t2.key where t1.key is null |
|||
3
Вафель
14.03.19
✎
15:56
|
||||
4
trad
14.03.19
✎
15:58
|
select * перед from забыл
|
|||
5
Вафель
14.03.19
✎
15:59
|
(4) так то вначале нужно в t2 вставить
|
|||
6
SeiOkami
14.03.19
✎
16:12
|
(2), это будет долговато, хотелось бы без соединений
|
|||
7
trad
14.03.19
✎
16:16
|
(6) предлагаю протестить и замерить и не торопиться с выводами
|
|||
8
SeiOkami
14.03.19
✎
16:17
|
(7). Смотрели. Таблицы в несколько терабайт, так что там всё больно
|
|||
9
SeiOkami
14.03.19
✎
16:52
|
(3), о, спасибо большое. MERGE работает довольно шустро
|
|||
10
Сияющий в темноте
14.03.19
✎
17:17
|
А insert or update?
|
|||
11
SeiOkami
15.03.19
✎
13:31
|
(10), не знаю такого в MS SQL
|
|||
12
Сияющий в темноте
15.03.19
✎
13:40
|
В общем-то,в mssql действительно из коробки такого нет
соответственно,предлагается писать процедуры http://qaru.site/questions/15291/solutions-for-insert-or-update-on-sql-server соответственно,в postgre немного по-другому http://www.postgresqltutorial.com/postgresql-upsert/ но тоже через одно место. p.s.просто,я даже не подумал,что такую простую и полезную инструкцию не реализовали. |
|||
13
Ёпрст
гуру
15.03.19
✎
14:00
|
(12) в sqllite есть
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |