bcp: Экспорт SQL-запроса в файл
use ZKZS
go
declare @query nvarchar(300) = '"select Id, KodofDeputat, KodofCommittee, DateofIncorporation, DateofWithdrawal from ZKZS.dbo.MemberofCommittee
join ZKZS.dbo.AttendanceInSession
on MemberofCommittee.Id = AttendanceInSession.MemberCode
join ZKZS.dbo.SessionofComitet on Code = SessionCode
where TheDate > convert(date, '/2018-12-31/') "';
bcp @query queryout 'C:\Users\anvar\OneDrive\Базы Данных\Курсовая\Импорт и экспорт данных\Экспорт ЧК в файл.csv'
-d ZKZS
-t ;
-k
-N
-T
-S ANVAR\SQLEXPRESS
CHECK_CONSTRAINT
TABLOCK
ОШИБКА! Как быть? Подчеркивает слово bcp Сообщение 102, уровень 15, состояние 1, строка 11 Неправильный синтаксис около конструкции "bdp".
Время выполнения: 2020-09-06T20:09:36.8496020+03:00
Ответы (1 шт):
Автор решения: Yitzhak Khabinsky
→ Ссылка
bcp.exe является утилитой командной строки. Запустить ее непосредственно в SSMS невозможно.
Вот полный пример того, как запустить bcp в SSMS. Просто измените что необходимо для ваших нужд.
SQL
/*
-T tells BCP to use Windows Authentication to connect to SQL Server. It will operate as the user who's running the command.
-U <login_id> -P <password> tells BCP to use SQL Server account while connecting to SQL Server.
*/
DECLARE @SQLCmd VARCHAR(8000)
, @outputFileName VARCHAR(256) = 'e:\Temp\SSIS_help15.xml'
, @bcp VARCHAR(256) = 'c:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\bcp.exe'
, @SQL VARCHAR(2048) = 'SET NOCOUNT ON; SELECT XMLCol FROM tempdb.dbo.T1 WHERE ID = 1;'
, @tcpPort VARCHAR(10) = '1433'
, @WindowsAuth BIT = 1 -- 1 is for Windows Authentication, 0 is for SQL Server Authentication
, @loginID VARCHAR(100) = 'loginID'
, @password VARCHAR(100) = 'password'
, @serverName VARCHAR(100) = 'SPACESHIP';
-- /B "WindowTitle" parameters produce output in the SSSMS !!!
SET @SQLCmd = 'START /B "WindowTitle" "' + @bcp + '"'
+ ' "' + @SQL + '"'
+ ' queryout "' + @outputFileName + '"'
--+ IIF(@WindowsAuth = 1, ' -T', ' -U '+ @loginID + ' -P ' + @password)
+ CASE WHEN @WindowsAuth = 1 THEN ' -T'
ELSE ' -U '+ @loginID + ' -P ' + @password
END
+ ' -c -C 65001 -a 32768'
+ ' -S "' + @serverName + ',' + @tcpPort + '"';
-- just to see it
SELECT @SQLCmd AS [Command to execute];
-- create file on the file system
EXECUTE master.sys.xp_cmdshell @SQLCmd;