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

Откуда:
Сообщений: 568
Реализована CLR функция которая отправляет запрос по HTTP к серверу и в ответ получает текст NVARCHAR(max) формата csv.
Типа:
Колонка1\tКолонка2\tКолонка3
Данные1\tДанные2\tДанные3
Данные4\tДанные5\tДанные6

которые необходимо занести в таблицу.
Вопрос состоит в том, как обратиться к этим данным и какие варианты существуют для решения поставленной задачи?
18 фев 18, 22:49    [21200415]     Ответить | Цитировать Сообщить модератору
 Re: Занесение данных из CSV из строки в таблицу  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1369
lex452,

если у вас уже есть CLR функция, допилите ее что бы она вам возвращала не скалярный результат а сразу резалт сет.
18 фев 18, 22:56    [21200422]     Ответить | Цитировать Сообщить модератору
 Re: Занесение данных из CSV из строки в таблицу  [new]
lex452
Member

Откуда:
Сообщений: 568
felix_ff
lex452,

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


Типа чтобы сразу сама данные вставляла через SqlBulkCopy или что вы имеете ввиду?
18 фев 18, 22:57    [21200424]     Ответить | Цитировать Сообщить модератору
 Re: Занесение данных из CSV из строки в таблицу  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1369
lex452,

нет что бы она вам возвращала не строку вида:

'Колонка1\tКолонка2\tКолонка3'

а возвращала результирующий набор вида

1 as [номер строки], 'Данные1' AS [Колонка1], 'Данные2' AS [Колонка2], 'Данные3' AS [Колонка3]
2 as [номер строки], 'Данные4' AS [Колонка1], 'Данные5' AS [Колонка2], 'Данные6' AS [Колонка3]
18 фев 18, 23:01    [21200427]     Ответить | Цитировать Сообщить модератору
 Re: Занесение данных из CSV из строки в таблицу  [new]
lex452
Member

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

Не совсем понимаю что это мне даст, мне все разно нужно будет к ним как-то обратиться, они же также вернуться в виде строки.
18 фев 18, 23:02    [21200432]     Ответить | Цитировать Сообщить модератору
 Re: Занесение данных из CSV из строки в таблицу  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1369
и тогда у вас конечная инструкция будет иметь вид что то типа:
 insert into result_table
   exec [dbo].[get_csv_file] ('somethig');


не придется ничего лишнего парсить.
18 фев 18, 23:02    [21200433]     Ответить | Цитировать Сообщить модератору
 Re: Занесение данных из CSV из строки в таблицу  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1369
lex452,

они вернутся не в виде строки а в виде результирующего набора, т.е. у вас уже будет не скалярная CLR функция а табличная CLR функция
18 фев 18, 23:03    [21200435]     Ответить | Цитировать Сообщить модератору
 Re: Занесение данных из CSV из строки в таблицу  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1369
ознакомьтесь с этим:
https://msdn.microsoft.com/ru-ru/library/ms131103(v=sql.120).aspx
18 фев 18, 23:05    [21200436]     Ответить | Цитировать Сообщить модератору
 Re: Занесение данных из CSV из строки в таблицу  [new]
lex452
Member

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

Уже читаю, не знал что можно возвращать таблицу. Спасибо
18 фев 18, 23:06    [21200439]     Ответить | Цитировать Сообщить модератору
 Re: Занесение данных из CSV из строки в таблицу  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1369
lex452,

а вообще даже лучше все завернуть в CLR процедуру вместо функции что бы результирующий набор был с плавающим числом столбцов.
18 фев 18, 23:08    [21200441]     Ответить | Цитировать Сообщить модератору
 Re: Занесение данных из CSV из строки в таблицу  [new]
lex452
Member

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

Интересный вариант, нужно попробовать. Но я надеялся что есть вариант типа openrowset, но без сохранения данных в файл
18 фев 18, 23:17    [21200449]     Ответить | Цитировать Сообщить модератору
 Re: Занесение данных из CSV из строки в таблицу  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1369
lex452,

Вообще все что касается веба по хорошему заворачивать вообще в отдельное приложение, которое будет мониторить поступающие запросы (таблица/очередь service broker) выполнять их на стороне приложения и уже по готовности результата заливать на сервер.

А сам сервер доступа во вне не имел.
18 фев 18, 23:39    [21200479]     Ответить | Цитировать Сообщить модератору
 Re: Занесение данных из CSV из строки в таблицу  [new]
ПаWWWлОдАрЕц
Member

Откуда: NSK-PVL
Сообщений: 135
Автор не указал @@version, в связи с этим я рискнул заглянуть в свой хрустальный шар и увидел решение в использовании для возвращаемого результата вместо csv формата, xml или json.
19 фев 18, 10:54    [21201104]     Ответить | Цитировать Сообщить модератору
 Re: Занесение данных из CSV из строки в таблицу  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
lex452,

а каким мозговым штурмом был выбран формат возврата csv? переделайте в xml как советуют и не придумывайте велосипеды сразу на костылях
19 фев 18, 10:59    [21201132]     Ответить | Цитировать Сообщить модератору
 Re: Занесение данных из CSV из строки в таблицу  [new]
lex452
Member

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

Csv с целью уменьшения данных передаваемых по сети. Есть и json его сейчас и заношу. Но слишком много избыточных данных. Sql server 2017
19 фев 18, 12:59    [21201586]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить