Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Смена имен/названий ID  [new]
Caxa_ASS
Member

Откуда:
Сообщений: 51
Добрый день.

Подскажите, пожалуйста, как сделать update сразу для 250-ти id, которым необходимо присвоить другие имена/название?

Список Id, и список Имен/названий для id, уже создан в MS Excel.

Пример:

...
8762203435012524641 a
8762203435012524605 b
8762203435012524649 c
8762203435012524533 d
8762203435012524490 e
...

Буду благодарен за помощь.
2 окт 19, 12:14    [21984722]     Ответить | Цитировать Сообщить модератору
 Re: Смена имен/названий ID  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7663
Caxa_ASS,

загрузите список на сервер в таблицу, затем update ... from ...
2 окт 19, 12:43    [21984754]     Ответить | Цитировать Сообщить модератору
 Re: Смена имен/названий ID  [new]
Caxa_ASS
Member

Откуда:
Сообщений: 51
Владислав Колосов,

Спасибо за ответ, но больше интересует решение вопроса скриптом.
2 окт 19, 12:57    [21984773]     Ответить | Цитировать Сообщить модератору
 Re: Смена имен/названий ID  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7663
Caxa_ASS,

Можно читать таблицу через openquery() или openrowset(), если это разовая задача.
2 окт 19, 13:03    [21984788]     Ответить | Цитировать Сообщить модератору
 Re: Смена имен/названий ID  [new]
ЛиП
Member

Откуда:
Сообщений: 348
Можно прямо в экселе конкатинацией update написать
2 окт 19, 13:21    [21984817]     Ответить | Цитировать Сообщить модератору
 Re: Смена имен/названий ID  [new]
Caxa_ASS
Member

Откуда:
Сообщений: 51
ЛиП
Можно прямо в экселе конкатинацией update написать


Мне не нужна конкатинация id и имения данного id, мне нужно для 250-ти id присвоить другие значения в кортежах (изменить ФИО).
2 окт 19, 13:27    [21984829]     Ответить | Цитировать Сообщить модератору
 Re: Смена имен/названий ID  [new]
Caxa_ASS
Member

Откуда:
Сообщений: 51
Владислав Колосов
Caxa_ASS,

Можно читать таблицу через openquery() или openrowset(), если это разовая задача.


- для openquery() - это как простой update, обновится только одна запись.

UPDATE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE id = 101')
SET name = 'ADifferentName';

- openrowset() тоже не подойдет
2 окт 19, 13:33    [21984842]     Ответить | Цитировать Сообщить модератору
 Re: Смена имен/названий ID  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
Caxa_ASS
ЛиП
Можно прямо в экселе конкатинацией update написать


Мне не нужна конкатинация id и имения данного id, мне нужно для 250-ти id присвоить другие значения в кортежах (изменить ФИО).


какой из шагов у вас не получается - загрузить данные из экселя в таблицу sql server или обновить одну таблицу на основе данных в другой?
2 окт 19, 13:35    [21984844]     Ответить | Цитировать Сообщить модератору
 Re: Смена имен/названий ID  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7663
Caxa_ASS,

так что обновить надо? Судя по синтаксису Вы хотите обновить Excel таблицу?
2 окт 19, 13:45    [21984867]     Ответить | Цитировать Сообщить модератору
 Re: Смена имен/названий ID  [new]
Caxa_ASS
Member

Откуда:
Сообщений: 51
Shakill,

из MS Excel в MS T-Sql
2 окт 19, 13:47    [21984872]     Ответить | Цитировать Сообщить модератору
 Re: Смена имен/названий ID  [new]
Caxa_ASS
Member

Откуда:
Сообщений: 51
Владислав Колосов
Caxa_ASS,

так что обновить надо? Судя по синтаксису Вы хотите обновить Excel таблицу?


нет, есть таблица в MS T-SQL, в таблице для 250 ID необходимо изменить ФИО:

Пример:

...
8762203435012524533 А.А. Иванов (заменить на А.А.Петров)
8762203435012524533 А.А. Толстой (заменить на В.В. Волк)
и т.д.
...
2 окт 19, 13:51    [21984884]     Ответить | Цитировать Сообщить модератору
 Re: Смена имен/названий ID  [new]
Konst_One
Member

Откуда:
Сообщений: 11517
прилинкуйте лист экселя к mssql серверу или через openquery и используйте через JOIN с основной таблице из базы
2 окт 19, 14:10    [21984914]     Ответить | Цитировать Сообщить модератору
 Re: Смена имен/названий ID  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
Caxa_ASS
Shakill,

из MS Excel в MS T-Sql

выбирайте

https://docs.microsoft.com/en-us/sql/relational-databases/import-export/import-data-from-excel-to-sql?view=sql-server-2017
2 окт 19, 14:25    [21984935]     Ответить | Цитировать Сообщить модератору
 Re: Смена имен/названий ID  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Caxa_ASS, я обычно поступаю так:

1) Перед первой колонкой и между колонками с данными добавляем еще одну колонку.
2) в первую помещаем ( или (' (в зависимости от того, число или строка у нас в колонке, растягиваем вниз
3) между колонок с данным помещаем , или '', или '',' также в зависимости от типов слева и справа, растягиваем вниз
3) после последней колонки с данными помещаем ), или ''), по аналогичному принципу, растягиваем вниз
4) Ctrl+A, Ctrl+C, вставляем в Management Studio, Ctrl+H (массовая замена), меняем знак табуляции на пустое значение.
5) дописываем в начало SELECT * FROM (VALUES , в конце стираем запятую, дописываем ) AS t (t1, t2) (полям названия задаем, как удобно).
6) У нас готов запрос для получения записей - соединяем с нужной таблицей, пишем апдейт.
2 окт 19, 14:42    [21984957]     Ответить | Цитировать Сообщить модератору
 Re: Смена имен/названий ID  [new]
ЛиП
Member

Откуда:
Сообщений: 348
Caxa_ASS
ЛиП
Можно прямо в экселе конкатинацией update написать

Мне не нужна конкатинация id и имения данного id, мне нужно для 250-ти id присвоить другие значения в кортежах (изменить ФИО).

Пусть в столбце A id, в столбце C новое фио. Тогда пишем конкатинацию рядом и протягиваем
="Update table set name = '"&C1&"' where id = "&A1
2 окт 19, 15:16    [21985012]     Ответить | Цитировать Сообщить модератору
 Re: Смена имен/названий ID  [new]
AndrF
Member

Откуда:
Сообщений: 2194
Можно ничего не линковать, а все сделать в модуле самого Excel.

Немножко VBA надо знать, конечно...
2 окт 19, 15:58    [21985089]     Ответить | Цитировать Сообщить модератору
 Re: Смена имен/названий ID  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2394
Minamoto,

жесть
вместо пунтов 1-5, в эксельке в новой колонке пишешь что-то вроде
=СЦЕПИТЬ("insert into #tmp_table select '";B2;"' as d, '";C2;"' as nn, '";E2;"' as zz")
двойным кликом протягиваешь эту формулу на всю конку, копируешь, вставляешь в студию, выполняешь

дальше уже работаешь с #tmp_table
2 окт 19, 16:42    [21985145]     Ответить | Цитировать Сообщить модератору
 Re: Смена имен/названий ID  [new]
Caxa_ASS
Member

Откуда:
Сообщений: 51
Minamoto,
мне нравится, спасибо.
2 окт 19, 16:55    [21985180]     Ответить | Цитировать Сообщить модератору
 Re: Смена имен/названий ID  [new]
Caxa_ASS
Member

Откуда:
Сообщений: 51
Всем спасибо, сделал все через python, завел все id и имена в массив, сделал необходимый print и зациклил его, получились 250 готовых апдейтов :)
2 окт 19, 16:57    [21985185]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить