Выполнение SQL-запроса с использованием BCP - PullRequest
0 голосов
/ 01 июня 2018

Я только начал учиться использовать BCP SQL Server, и я использую его для запроса базы данных SQL Server и создания CSV-файла.Я могу создать файл без проблем, используя эту команду:

bcp "SELECT 'ID' FROM [база данных]. [Dbo]. [Таблица]" запрос C: \ DeskTop \ test.csv -c -t, -T -S

Однако мне нужно выполнить более предварительный запрос, и у меня возникли проблемы.Кажется, что запрос анализируется, и части пытаются быть выполнены.Я получаю ошибки, скажем, команда FROM не найдена.Вот запрос, который я пытаюсь выполнить в команде BCP:

SELECT REPLICATE(0, 10-LEN(t.[CustId])) + CAST(t.[CustId] as       
                                                 nvarchar) as CustId
   ,(CASE WHEN t.[DisclId] = 'ECONSENT' THEN 'eConsent'
          WHEN t.[DisclId] = 'OLACC' THEN 'OLACC' END) as DisclId
   ,CONVERT(DATE,t.[AgreeDateTime],23) AS AgreeDateTime
  ,t.[Vers]
  ,'0' as ACNT_ID
  ,'Accepted' as Status_Desc
  ,'0001-01-01' as Last_Delay_Date
  ,'0' as Delay_Count
FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY CustId, DisclId 
      ORDER BY AgreeDateTime DESC) AS RowNumber 
FROM [DATABASE].[dbo].[TABLE]) AS t
WHERE t.RowNumber = 1
ORDER BY CustId

Каков правильный синтаксис для выполнения этого запроса с помощью команды BCP?

Заранее спасибо

1 Ответ

0 голосов
/ 30 сентября 2018

bcp больше всего нравится «встроенные запросы», где запрос может быть объединен в одну строку для приглашения cmd.У меня есть несколько случаев, когда мой оператор SQL слишком велик для этой сделки.Возможно, вам это удастся, но если нет, создайте представление.

Используйте представление для вывода.Вот что я сделал.

Для этого вот как я вывожу представление:

bcp.exe <database>.dbo.<VIEW NAME> out "Drive:\Folder Path\file.csv" -T -S localhost -c -t"|" -C65001

однако, чтобы ответить на ваш непосредственный вопрос, замените имя представления в приведенном выше примере на ваш запрос, в окружении двойных кавычек.

Это даст вам CSV с поддержкой UTF-8.

...