|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
.Net Framework 2.0 Необходимо сохранить данные, полученные последовательно от нескольких SqlDataReader напрямую в шифрованный zip-архив. Для работы с zip-файлами использую Ionic.Zip.dll: Код: c# 1. 2. 3. 4. 5. 6. 7.
изначально делал неумно (это приводило к OutOfMemoryException): Код: c# 1. 2. 3. 4. 5.
как реализовать запись потока напрямую в zip-файл? p.s. реализацию процесса записи результатов SqlDataReader в поток не привожу, так как она тривиальна и сводится к формированию в заголовков полей и строк данных в юникоде с некоторым преобразованием. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2016, 17:51 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
Так можно, например Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2016, 20:57 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
Cat2, там большое количество данных - OutOfMemoryException ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2016, 21:08 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
Нашел интересную ссылку , но разобраться всё равно не могу, помогите пожалуйста. Раньше у меня работал метод SqlDataReaderToStream, но при большом количестве данных это не работает. Код: c# 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. 35. 36. 37. 38. 39. 40. 41. 42. 43.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2016, 21:16 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
=Сергей=, ну опять MemoryStream запиши для начала во временный файл на диске, его и сжимай. как заработает - тогда и занимайся оптимизацией ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2016, 21:25 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
Изопропил, На диск сохранять нельзя по соображениям безопасности. У меня всё работало, пытаюсь исправить ошибку нехватки памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2016, 21:29 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
=Сергей=На диск сохранять нельзя по соображениям безопасности. пароль хардкодить типа - безопасно ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2016, 21:36 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
Изопропил, требование заказчика :( ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2016, 21:43 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
реализовать стрим, извлекающий данные из базы(а не из базы толкать данные в стрим) скормить этот стрим zip'у ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2016, 22:03 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
Изопропил, Спасибо, это лучшая мысль, жаль не моя ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2016, 23:07 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
=Сергей=, тараканы могут быть с длиной потока. Если maxlong вернуть - всё вроде адекватно пакуется. если бросить NotSupportedException или вернуть -1 без компрессии поток пишется ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2016, 23:57 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
Сделал так: Код: c# 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
Stream пухнет и вываливается по OutOfMemoryException. Что я делаю не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 00:13 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
=Сергей=, по SqlDataReaderToStream - вагон и маленькая тележка замечаний из ридера лучше типизированное значение извлекать (GetDecimal ,GetDateTime и т д) Field = _reader[i].ToString().Replace(",", "."); - ToString(CultureInfo.InvariantCulture.NumberFormat) корректнее будет switch незачем по строке делать строку лучше StringBuilder'ом собирать ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 00:19 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
=Сергей=Что я делаю не так? я же сказал - избавиться от MemoryStream свой класс наследник от Stream сделать, переопределить Read, Length этот стрим и передавать в zip.AddEntry ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 00:26 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
Изопропил, за замечания большое спасибо, буду исправлять свой "индийский код" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 00:36 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
=Сергей=, скорее всего сходу не выйдет - завтра помогу нарисовать нужный стрим ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 00:40 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
Изопропил, Признаться, я сегодня взял готовый кусок отсюда , но заставить его работать не смог. Вот он: Код: c# 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.
Прошу помощи. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 00:40 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
=Сергей=Прошу помощи.Помощь: SqlClient Streaming Support ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 05:15 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
=Сергей=На диск сохранять нельзя по соображениям безопасности.Если открывать файл с параметрами FileShare.None + FileOptions.DeleteOnClose , то проблем с безопасностью, вероятно, не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 05:19 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
Алексей К=Сергей=Прошу помощи.Помощь: SqlClient Streaming Support Поторопился, это не поможет. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 05:23 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
Как вариант - заворачивать запросы в for xml raw, root, type, от ридера получать экземпляр SqlXml, открывать у него XmlReader, читать порциями, и отдавать на архивацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 06:24 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
поток для скармливания архиватору: Код: c# 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 09:18 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
Алексей КFileShare.None[/b] + [b]FileOptions.DeleteOnClose ночью мне пришла в голову эта мысль, спасибо!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 09:37 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
Изопропил, ОГРОМНОЕ спасибо! Сейчас буду пробовать, хоть ничего и не понял из кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 09:50 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
Изопропил, а как правильно употребить BStream? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 09:58 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
=Сергей=, Зачем ты пишешь строку и в юникоде? Если писать в ascii - то размер будет в 2 разе меньше. Если писать бинарные данные - размер очень сильно уменьшиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 10:06 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
ну и пример итератора Код: c# 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 10:08 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
=Сергей=Изопропил, а как правильно употребить BStream? а теперь собираем всё вместе: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 10:13 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
ЕвгенийВ, специфика данных накладывает необходимость выгрузки в Unicode / UTF-8. Так как данные в основном не на латинице, то большого смысла в UTF-8 нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 10:15 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
ЕвгенийВЕсли писать в ascii - то размер будет в 2 разе меньше. во-первых ASCII - это только ASCII (0..127) во-вторых кодовую страницу на каком основании назначать? (это только упоротые дельфийцы не понимают) в третьих - zip поможет сжать unicode ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 10:21 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
Изопропил, Не заметил, что могут быть строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 10:52 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
ЕвгенийВНе заметил, что могут быть строки. грабли то зачем по дороге раскладывать? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 11:00 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
Изопропил, всё работает! ОГРОМНОЕ спасибо за конкретную помощь и советы!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 11:48 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
=Сергей=, внимательно изучи код, пригодится ещё ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 11:58 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
Изопропил, нужны ещё заголовки полей, а куда вставить в коде, чтоб ничего не сломать? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 13:08 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
уже сделал ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 13:15 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
но не работает :( ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 13:22 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
всё, теперь точно работает! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 13:37 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
=Сергей=но не работает :( Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 13:45 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
Один фиг рано или поздно сломается, когда исходные таблицы еще больше раздуются. Я бы прямо сейчас начал бить таблицы на куски и передавать одну таблицу в нескольких файлах ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 14:55 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
Cat2Один фиг рано или поздно сломается, когда исходные таблицы еще больше раздуются. да, когда место на диске закончится. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 15:01 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
Изопропил, СПАСИБО огромное, всё работает как часы!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 19:02 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
ИзопропилCat2Один фиг рано или поздно сломается, когда исходные таблицы еще больше раздуются. да, когда место на диске закончится. Это будет очень скоро. Но тоже спасибо. Я бы сам и не обратил внимания на новые фичи в 4.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 19:35 |
|
Преобразование SqlDataReader в Stream
|
|||
---|---|---|---|
#18+
Cat2Я бы сам и не обратил внимания на новые фичи в 4.5 я пытался вообще-то под 2.0 совместимость сохранить(как в стартовом посте указано) во всяком случае с target .NET Framework 2.0 собирается. ну а как место закончится - бей на файлы, не бей - один хер не влезет и новое ТЗ нужно ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2016, 19:39 |
|
|
start [/forum/topic.php?all=1&fid=20&tid=1400550]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
others: | 274ms |
total: | 463ms |
0 / 0 |