|
CSV в строке
|
|||
---|---|---|---|
#18+
Добрый всем день. Есть несколько способов загрузить данные из csv файла: bulk insert, openrowset и т.д Вопрос: может кто знает, как сделать тоже самое, но вместо файла данные находятся в строке Т.е есть Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
I Have Nine Lives You Have One Only THINK! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 13:06 |
|
CSV в строке
|
|||
---|---|---|---|
#18+
https://docs.microsoft.com/ru-ru/sql/t-sql/functions/string-split-transact-sql?view=sql-server-ver15 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 13:35 |
|
CSV в строке
|
|||
---|---|---|---|
#18+
SIMPLicity_ https://docs.microsoft.com/ru-ru/sql/t-sql/functions/string-split-transact-sql?view=sql-server-ver15 (если версия подходящая) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 13:35 |
|
CSV в строке
|
|||
---|---|---|---|
#18+
SIMPLicity_ https://docs.microsoft.com/ru-ru/sql/t-sql/functions/string-split-transact-sql?view=sql-server-ver15 string_split вещь хорошая, но мне надо не в одну колонку, а в разные, как это происходит при bulk insert если бы string_split возвращало значения в том порядке, в котором они в файле, то было бы проще на текущий момент я делаю так сплитую строку на строки с разделителем "перевод каретки" и потом полученные строки превращаю в xml и отбираю данные (XQuery), но, как мне кажется, слишком много лишних движений в связи с чем и был задан вопрос ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 13:46 |
|
CSV в строке
|
|||
---|---|---|---|
#18+
HandKot, выбирайте подстрокой по таблице чисел 1,2,3,4,5. Но, имо, можно написать CLR разборщик. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 15:03 |
|
CSV в строке
|
|||
---|---|---|---|
#18+
court я как раз сперва xml в csv и загоняю, т.к он большой и бывает долго отрабатывает Владислав Колосов HandKot, выбирайте подстрокой по таблице чисел 1,2,3,4,5. Но, имо, можно написать CLR разборщик. начинаю к этому склонятся, т.к, как мне кажется, это наиболее быстрый вариант. Но хотелось сделать что-то универсальное, а clr - это прибитое гвоздями задача в целом следующая - обработка огромного xml, преобразовать в таблицу. думал делать так: с помощью XSLT преобразовать в csv и потом bulk insertом загнать в таблицу но файл создать нет возможности. пока, как вариант, писать для каждого xml свою clr, которая будет возвращать таблицу с данными может кто ещё, что предложит или охаит. милости просим ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 18:12 |
|
CSV в строке
|
|||
---|---|---|---|
#18+
Покажи образец XML. Если он - плоский наподобие Код: xml 1. 2. 3. 4. 5. 6.
то я такое делал. Где-то скриптики остались толи на groovy толи на java. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 19:05 |
|
CSV в строке
|
|||
---|---|---|---|
#18+
И еще интересный вопрос. Может ли XSLT стримить? Тоесть не создавать промежуточное XmlDocument представление в памяти. Т.к. возможно что для толстого (несколько гигабайт) инпута эта трансформация просто упадет по памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 19:54 |
|
CSV в строке
|
|||
---|---|---|---|
#18+
HandKot, задача в целом следующая - обработка огромного xml неожиданный подход, такие задачи решаются не с помощью микроскопа SQL Server. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 20:06 |
|
CSV в строке
|
|||
---|---|---|---|
#18+
Владислав Колосов HandKot, задача в целом следующая - обработка огромного xml неожиданный подход, такие задачи решаются не с помощью микроскопа SQL Server. я знаю и предпочел бы SSIS. Но в данном случае я ограничен только SQL mayton Покажи образец XML. Если он - плоский наподобие Код: xml 1. 2. 3. 4. 5. 6.
то я такое делал. Где-то скриптики остались толи на groovy толи на java. файл, можно сказать плоский с несколькими уровнями вложенности примерно такой Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
на уровне <field5> несколько сотен тысяч элементов, которые мне и надо вытаскивать в таблицу, добавляя данные из уровня <field3> ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 09:52 |
|
CSV в строке
|
|||
---|---|---|---|
#18+
Мда. Тогда мои скрипты не подходят. А у тебя в результирующем CSV количество строк должно совпадать с количеством листиков в XML ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 09:54 |
|
CSV в строке
|
|||
---|---|---|---|
#18+
mayton И еще интересный вопрос. Может ли XSLT стримить? Тоесть не создавать промежуточное XmlDocument представление в памяти. Т.к. возможно что для толстого (несколько гигабайт) инпута эта трансформация просто упадет по памяти. когда я подобное делал посредством SSIS, то ко мне прибегали админы с выпученными глазами и криками, что убил всю память. Но тогда, кроме большого XML, XLST была не простая, а с использованием словарей ключей. Одно спасало, что данные приходили раз в час ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 09:54 |
|
CSV в строке
|
|||
---|---|---|---|
#18+
HandKot, CLR + XML Bulk Load? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 10:18 |
|
CSV в строке
|
|||
---|---|---|---|
#18+
invm HandKot, CLR + XML Bulk Load? если не найду другого решения, придется так и делать ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 12:10 |
|
CSV в строке
|
|||
---|---|---|---|
#18+
mayton И еще интересный вопрос. Может ли XSLT стримить? Тоесть не создавать промежуточное XmlDocument представление в памяти. Т.к. возможно что для толстого (несколько гигабайт) инпута эта трансформация просто упадет по памяти. Есть потоковые (SAX) парсеры XML - они могут. Пример sqlxmlbulkload. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 19:26 |
|
CSV в строке
|
|||
---|---|---|---|
#18+
HandKot задача в целом следующая - обработка огромного xml, преобразовать в таблицу. А откуда берётся эта адова xml-строка? Её же не руками каждый раз набирают ("declare @str nvarchar(max)=N'......'; " ); ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2021, 22:40 |
|
CSV в строке
|
|||
---|---|---|---|
#18+
SIMPLicity_ HandKot задача в целом следующая - обработка огромного xml, преобразовать в таблицу. А откуда берётся эта адова xml-строка? Её же не руками каждый раз набирают ("declare @str nvarchar(max)=N'......'; " ); xml поступает от веб-сервиса и загрузчиком закидывается в таблицу, которую мне и надо разобрать ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2021, 09:54 |
|
CSV в строке
|
|||
---|---|---|---|
#18+
HandKot, подобным разбором должен заниматься сам сервис либо специально обученная утилита, а сервис должен сохранить в файл, а не в таблицу. Если объем данных большой, то можно разбор выполнять на отдельном сервере во избежание конкуренции за оперативную память. Поменяйте точку приложения сил и процесс станет намного проще. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2021, 16:06 |
|
|
start [/forum/topic.php?fid=46&msg=40084132&tid=1684498]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
31ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 119ms |
0 / 0 |