Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как запустить bcp с параметрами из TSQL? / 12 сообщений из 12, страница 1 из 1
15.08.2019, 11:41
    #39849671
palladin600
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запустить bcp с параметрами из TSQL?
Дописав, худо-бедно скрипт, на клиенте столкнулся с невозможностью заинсертить овер 1000 записей в БД.

Код: plaintext
The number of row value expressions in the INSERT statement exceeds the maximum allowed number of 1000 row values.

Для этой цели решил воспользоваться пакетным обработчиком bcp.
Но, напрямую, с удалённого сервера я не могу запустить ехешник. Выходит, дыра только через запрос.

Так вот, можно ли выполнить запрос, чтобы запустить bcp да ещё передав ему список инструкций Insert?
...
Рейтинг: 0 / 0
15.08.2019, 11:42
    #39849672
Minamoto
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запустить bcp с параметрами из TSQL?
palladin600Дописав, худо-бедно скрипт, на клиенте столкнулся с невозможностью заинсертить овер 1000 записей в БД.

Код: plaintext
The number of row value expressions in the INSERT statement exceeds the maximum allowed number of 1000 row values.

Для этой цели решил воспользоваться пакетным обработчиком bcp.
Но, напрямую, с удалённого сервера я не могу запустить ехешник. Выходит, дыра только через запрос.

Так вот, можно ли выполнить запрос, чтобы запустить bcp да ещё передав ему список инструкций Insert?А что мешает побить на запросы с менее чем 1000 записей?
...
Рейтинг: 0 / 0
15.08.2019, 11:44
    #39849675
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запустить bcp с параметрами из TSQL?
palladin600,

переписать через INSERT... SELECT ... UNION ALL

оставльное не получилось расшифровать
...
Рейтинг: 0 / 0
15.08.2019, 11:54
    #39849686
palladin600
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запустить bcp с параметрами из TSQL?
Разбивать каждый раз на порции, на мой взгляд, интересная идея, но что-то в ней не то.
Очевидно, что для таких операции b atch c ommand p roccesor более предназначенный.

Так вот всё же, можно ли запустить bcp?
В сети нахожу примеры запуска bcp только для экспорта данных из БД в файл. А нужна обратная процедура из файла в БД.

Т.е. должен быть какой-то синтаксис вида:
Код: sql
1.
2.
3.
DECLARE @sql as ...
SET @sql = 'bcp "EXEC [Database].' + 'мой список инструкций'
...
...
Рейтинг: 0 / 0
15.08.2019, 12:00
    #39849692
andy st
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запустить bcp с параметрами из TSQL?
palladin600Разбивать каждый раз на порции, на мой взгляд, интересная идея, но что-то в ней не то...
begin transaction и т.д.?
...
Рейтинг: 0 / 0
15.08.2019, 12:03
    #39849696
Minamoto
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запустить bcp с параметрами из TSQL?
palladin600Разбивать каждый раз на порции, на мой взгляд, интересная идея, но что-то в ней не то.
Очевидно, что для таких операции b atch c ommand p roccesor более предназначенный.

Так вот всё же, можно ли запустить bcp?
В сети нахожу примеры запуска bcp только для экспорта данных из БД в файл. А нужна обратная процедура из файла в БД.

Т.е. должен быть какой-то синтаксис вида:
Код: sql
1.
2.
3.
DECLARE @sql as ...
SET @sql = 'bcp "EXEC [Database].' + 'мой список инструкций'
...

bcp - отдельная утилита для загрузки данных в базу, а не программное расширение для Management Studio, или чем вы там пользуетесь.
Попытка написать
Код: sql
1.
2.
3.
DECLARE @sql as ...
SET @sql = 'bcp "EXEC [Database].' + 'мой список инструкций'
...


для меня выглядит как удаление гланд через анальное отвестие, простите.

Ну если очень хочется, то ваш путь идет в сторону xp_cmdshell, но, на мой взгляд, это категорически неверный путь.
...
Рейтинг: 0 / 0
15.08.2019, 12:08
    #39849698
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запустить bcp с параметрами из TSQL?
palladin600,

ещё раз: почему вы решили что ваша конструкция INSERT INTO VALUES ++1000row зайдёт которая не заходит, зайдёт через bcp?
...
Рейтинг: 0 / 0
15.08.2019, 12:13
    #39849701
palladin600
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запустить bcp с параметрами из TSQL?
TaPaK,
не претендую на ценность высказывания, но если своими словами, то потому что, средства производительности сервера предварительно высчитали, что подобный инсерт нагнёт бд на какое-то время, что выходит за временные рамки обслуживания запроса.
bcp - работает иначе, при проведении инструкций отключается ряд проверок, что позволяет в значительной мере быстрее исполнить запрос.
...
Рейтинг: 0 / 0
15.08.2019, 12:16
    #39849702
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запустить bcp с параметрами из TSQL?
palladin600Дописав, худо-бедно скрипт, на клиенте столкнулся с невозможностью заинсертить овер 1000 записей в БД.

Код: plaintext
The number of row value expressions in the INSERT statement exceeds the maximum allowed number of 1000 row values.

Для этой цели решил воспользоваться пакетным обработчиком bcp.
Но, напрямую, с удалённого сервера я не могу запустить ехешник. Выходит, дыра только через запрос.

Так вот, можно ли выполнить запрос, чтобы запустить bcp да ещё передав ему список инструкций Insert?
Ты, наверное, с использованием табличного конструктора вставлял?
Код: sql
1.
2.
3.
4.
5.
insert into table_1 
Values (...),
 (...),
...
 (...)


Так да. Есть ограничение в 1000 строк.

Перепиши через Select из табличного конструктора.
Оно такого ограничения - не имеет:
Код: sql
1.
2.
3.
4.
5.
6.
7.
insert into table_1 
Select * from 
(Values (...),
 (...),
...
 (...)
) tbl (field1, ... ,fieldN)
...
Рейтинг: 0 / 0
15.08.2019, 12:22
    #39849710
palladin600
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запустить bcp с параметрами из TSQL?
uaggsterТы, наверное, с использованием табличного конструктора вставлял?
Да, именно так! Спасибо за подсказку, видимо TaPaK в первом своём сообщении тоже имел в виду именно это.

MinamotoНу если очень хочется, то ваш путь идет в сторону xp_cmdshell, но, на мой взгляд, это категорически неверный путь.
Понял, судя по коментам, выходит, народ со стажем так не делает.
...
Рейтинг: 0 / 0
15.08.2019, 13:36
    #39849754
Guf
Guf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запустить bcp с параметрами из TSQL?
palladin600Очевидно, что для таких операции b atch c ommand p roccesor более предназначенный.
Если не выдумать расшифровки самому а читать хелп, хотя бы на русском, то не будет таких ляпов
https://docs.microsoft.com/ru-ru/sql/tools/bcp-utility?view=sql-server-2017 Служебная программа " b ulk c opy p rogram" (bcp) используется для массового копирования данных между экземпляром Microsoft SQL Server и файлом данных в указанном пользователем формате
...
Рейтинг: 0 / 0
15.08.2019, 13:37
    #39849755
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запустить bcp с параметрами из TSQL?
palladin600Понял, судя по коментам, выходит, народ со стажем так не делает.
Ну почему "не делает"?
Когда мне нужно однократно, эпизодически, вставить до 2-3 тысяч строк, ну хорошо, 10 - я именно так и делаю.
Это быстрее и удобнее, чем возиться с любым другим способом помещения данных на сервер.

Есть даже лайфхак с Экселем для этого.
Пусть есть табличка в Экселе. Рисуешь в столбце формулу, типа такой:
= "('" & A2 & "', " & D2 & "),"
Она генерирует строчки типа:
('Тест', 1),
Ну и, дальше, копи-паста в окошко SSMS, и выполняешь insert from values.
Гораздо быстрее, при некотором навыке, чем импортировать данные другими способами.
Для однократного перетаскивания данных - самое то.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как запустить bcp с параметрами из TSQL? / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]