|
|
|
Как разобрать поле типа text?
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Сижу, держусь за клавиатуру, не знаю за что хвататься. Потому прошу помощи у сообщества. =) Задача: есть MSSQL Server (2014 - 12.0.2000 x64). В нем БД, а в ней таблица с полем типа text. В этом поле находится информация. Много информации, > 9000 символов. Информация логически разделена на блоки, имена блоков имеют формат "[blockName]". Информация помещенная в блоки записана построчно, с новой строки и разделена двойным сдвигом каретки. Блоки разделены тройным сдвигом каретки. В каждом блоке храниться от 9 до 600 строк. Цель задачи - скопировать эту информацию в другую БД (Oracle 12 SE x64), находящуюся на другом физическом сервере (соединение настроено через Linked Server), в удобоваримом виде. Выполнять запрос на вставку для каждого нового блока, раскидывая его по куче таблиц, как-то не очень правильно... Полагаю корректнее было бы отправлять сформированный XML, благо Oracle его кушает на ура, а потом уже разбирать его инструментами Oracle'а. Но гугл что-то подсказывает, что собрать XML в MSSQL не так уж и тривиально) Более того, учитывая, что MSSQL Server у меня вторую неделю, то и сам способ построчного/посимвольного разбора целевого поля (это вообще возможно??) остается для меня загадкой. =) Ребят, может кто что подскажет как правильно реализовать эту тему, и как вообще парсится такое поле? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 08:44:52 |
|
||
|
Как разобрать поле типа text?
|
|||
|---|---|---|---|
|
#18+
1. Если ты герой оракала - прередай поле целиком и пластай его на стороне оракала. 2. Сборка XML в MS SQL - банальнейшая операция. 3. Разборка - немногим сложнее. Особенно, если сообразить преобразовать TEXT в NVARCHAR(max). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 09:45:48 |
|
||
|
Как разобрать поле типа text?
|
|||
|---|---|---|---|
|
#18+
А именование блоков формализованно ? Кстати, replace отлично заменяет три каретки или две каретки на <tag></tag> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 10:10:58 |
|
||
|
Как разобрать поле типа text?
|
|||
|---|---|---|---|
|
#18+
CammomileА именование блоков формализованно ? Кстати, replace отлично заменяет три каретки или две каретки на <tag></tag> только REPLACE с text не работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 10:17:02 |
|
||
|
Как разобрать поле типа text?
|
|||
|---|---|---|---|
|
#18+
Cammomile https://technet.microsoft.com/ru-ru/library/ms187928(v=sql.105).aspx при cast поле обрежется до 8000 символов вроде? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 10:27:02 |
|
||
|
Как разобрать поле типа text?
|
|||
|---|---|---|---|
|
#18+
Tactical Nuclear Penguin, он до этого пункта никогда не дочитывал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 10:30:25 |
|
||
|
Как разобрать поле типа text?
|
|||
|---|---|---|---|
|
#18+
Надо, всё-таки, сначала поменять тип поля на NVARCHAR(MAX) или VARCHAR(MAX). А уже потом - всё остальное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 11:01:51 |
|
||
|
Как разобрать поле типа text?
|
|||
|---|---|---|---|
|
#18+
Tactical Nuclear Penguin, на моем Microsoft SQL Server 2012 (SP3-CU10) (KB4025925) - 11.0.6607.3 (X64) Jul 8 2017 16:43:40 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) не обрезается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 11:08:08 |
|
||
|
Как разобрать поле типа text?
|
|||
|---|---|---|---|
|
#18+
aleks222, 1) Нет, не герой, но с Ораклом привычнее) Кстати, почему я сразу не допер все скопом в Оракл кидать и уже там парсисть - вопрос. Сейчас так и делаю. 2) Ну фиг его знает.. беглый поиск в гугле меня че-то напугал. 3) TEXT в NVARCHAR(max) преобразовать не получиться. В NVARCHAR(max) помещается немногим больше 4К символов. /то я уже пробовал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 11:09:21 |
|
||
|
Как разобрать поле типа text?
|
|||
|---|---|---|---|
|
#18+
iap, К сожалению вместе с преобразованием "обрезается" и половина всего текста. Тупо не вмешается в NVARCHAR(MAX). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 11:11:00 |
|
||
|
Как разобрать поле типа text?
|
|||
|---|---|---|---|
|
#18+
mozgen TEXT в NVARCHAR(max) преобразовать не получиться. В NVARCHAR(max) помещается немногим больше 4К символов. /то я уже пробовал. 1) зачем из ascii (text) делать юникод (nvarchar)? чтоб в 2 раза больше места заняло? 2) в NVARCHAR(max) влазит 2Гб, не сочиняйте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 11:12:25 |
|
||
|
Как разобрать поле типа text?
|
|||
|---|---|---|---|
|
#18+
Хм, нус, всем спасибо, aleks222 верно пнул, будут курочить в Оракле. Хотя способ реализации также интересен и в MSSQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 11:13:02 |
|
||
|
Как разобрать поле типа text?
|
|||
|---|---|---|---|
|
#18+
Внутри простыне с необрезанными данными Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 11:18:56 |
|
||
|
Как разобрать поле типа text?
|
|||
|---|---|---|---|
|
#18+
mozgenХм, нус, всем спасибо, aleks222 верно пнул, будут курочить в Оракле. Хотя способ реализации также интересен и в MSSQL. Тут две задачи, перевести текст в текст(каламбур, да), вторая распарсить текст. Можно реплейсами нарисовать хмл. Можно написать функцию, которая бьет текст по разделителю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 11:20:34 |
|
||
|
Как разобрать поле типа text?
|
|||
|---|---|---|---|
|
#18+
Yasha1232) в NVARCHAR(max) влазит 2Гб, не сочиняйтеЯ думаю, что 1 гигабайт, а не 2. Потому что двухсимвольный юникод ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 12:13:01 |
|
||
|
Как разобрать поле типа text?
|
|||
|---|---|---|---|
|
#18+
iapYasha1232) в NVARCHAR(max) влазит 2Гб, не сочиняйтеЯ думаю, что 1 гигабайт, а не 2. Потому что двухсимвольный юникод не путайте гигабайты с символами. влезет в 2 раза меньше символов по сравнению с ascii. но именно 2Гб и влезут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 12:50:01 |
|
||
|
Как разобрать поле типа text?
|
|||
|---|---|---|---|
|
#18+
Yasha123iapпропущено... Я думаю, что 1 гигабайт, а не 2. Потому что двухсимвольный юникод не путайте гигабайты с символами. влезет в 2 раза меньше символов по сравнению с ascii. но именно 2Гб и влезутКаюсь! Правильно говорить о миллиарде символов, а не о гигабайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 12:56:46 |
|
||
|
Как разобрать поле типа text?
|
|||
|---|---|---|---|
|
#18+
Cammomile, подсказка Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 13:25:28 |
|
||
|
Как разобрать поле типа text?
|
|||
|---|---|---|---|
|
#18+
так понятнее Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 13:55:34 |
|
||
|
Как разобрать поле типа text?
|
|||
|---|---|---|---|
|
#18+
Да, я понял, что это намек на то, что простыню на форум постить не надо. Спасибо. Позабыл, про REPLICATE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 13:58:12 |
|
||
|
Как разобрать поле типа text?
|
|||
|---|---|---|---|
|
#18+
подсказка... ну пропустили в последнем примере явный каст и получается что переменная будет трактоваться как NVARCHAR(4000) что вы этим хотели сказать? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 13:59:34 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39563626&tid=1690762]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
226ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 546ms |

| 0 / 0 |
