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

Откуда:
Сообщений: 261
Всем приветик
У меня такая проблема. Есть БД с кучей скважин и есть список скважин (их около 400), которые надо удалить из БД.
Подскажите, пожалуйста, как это сделать? Чтобы не надо было каждую скважину отдельно удалять (я только так и могу...)
Может можно придумать обращение в csv с этими скважинами.
Или может еще какие идеи подкинете?

DELETE FROM [collar] WHERE [holeid] = '01' и так для каждой? либо писать or и вставлять вручную?
А может SQL из экселя например сам построчно их брать?

Кажется у меня кривые руки...
4 апр 18, 07:27    [21310264]     Ответить | Цитировать Сообщить модератору
 Re: Возможности SQL скрипта  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
katish444,

Как вариант:
В эксель формулу:
=Сцепить("Delete FROM [collar] WHERE [holeid] = '";a1;"'")

формулу скопировать на весь диапозон, результат в скрипт
4 апр 18, 08:34    [21310349]     Ответить | Цитировать Сообщить модератору
 Re: Возможности SQL скрипта  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
katish444,

Главное чтобы коды к числу не преобразовались
4 апр 18, 08:35    [21310350]     Ответить | Цитировать Сообщить модератору
 Re: Возможности SQL скрипта  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
katish444,

Если есть возможность получить список запросом:

DELETE FROM [collar] WHERE [holeid] in (Select [holeid] From ...........)
4 апр 18, 08:36    [21310355]     Ответить | Цитировать Сообщить модератору
 Re: Возможности SQL скрипта  [new]
katish444
Member

Откуда:
Сообщений: 261
Kopelly, нет, они у меня в экселе
4 апр 18, 09:03    [21310408]     Ответить | Цитировать Сообщить модератору
 Re: Возможности SQL скрипта  [new]
katish444
Member

Откуда:
Сообщений: 261
Kopelly,
вот ты голова!
Все гениальное просто))) Спасибо большое
4 апр 18, 09:07    [21310413]     Ответить | Цитировать Сообщить модератору
 Re: Возможности SQL скрипта  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Kopelly
Если есть возможность получить список запросом

И получить большой и бородатый problem 8623 / 8632.
уж лучше
Kopelly
=Сцепить("Delete FROM [collar] WHERE [holeid] = '";a1;"'")


Но раз уж понеслась пьянка добавлю еще способов:
+ №2. Техничный
1. Через мастер импорта импортировать список скважин из CSV в табличку [bad_list]
2. DELETE t FROM [collar] t INNER JOIN [bad_list] s ON ( t.[holeid] = s.[holeid] )

+ №3. Рукожопный

1. С помощью SSMS создать табличку с [bad_list] и полем [holeid].
2. Выбрать на листе все значения этих самых holeid - они ведь в колонке, да? - и скопировать в буфер обмена (CTRL+C)
3. В SSMS открыть табличку на редактирование записей (EDIT TOP N rows)
4. Нажать на заголовок колонки holeid и вставить данные (CTRL+V)
5. В зависимости от количества строк и задумчивости РМ подождать (попить чаю, попудрить нос, проверить почту, заполнить отчет о работе)
6. DELETE t FROM [collar] t INNER JOIN [bad_list] s ON ( t.[holeid] = s.[holeid] )

+ №4. Извращенный

А еще можно сделать в excel макрос на VBA с ADODB, где цикл будет идти по UsedRange листа и формировать sql с DELETE FROM [collar] WHERE [holeid] = '<holeid'>

+ №5. Излишне техничный

То же самое, что и №1, но создание таблицы заранее и загрузка через SSIS / BULK INSERT
4 апр 18, 10:15    [21310563]     Ответить | Цитировать Сообщить модератору
 Re: Возможности SQL скрипта  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2396
еще вариант
=Сцепить("insert into #tmp select '";a1;"' as nn")

т.е. генерим временную таблицу с нужными кодами, пишем вначале select * from #tmp inner join c основной таблицей, _проверяем_ что все корректно загрузили (не пропустив не захватив лишнего), и потом уже select меняем на delete
4 апр 18, 10:42    [21310673]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить