|
Нужна помощь - разное поведение OleDbAdapter на локальном и удалённом сервере
|
|||
---|---|---|---|
#18+
Всем доброго времени суток. Прошу опытных разработчиков помочь в решении проблемы. Есть интернет-магазин ASP.NET MVC 4 Суть проблемы - есть метод контроллера, который принимает excel файл, читает из него строки и заносит в базу данных. То есть по сути это модуль импорта товаров в интернет магазин из Excel файла. Проблема в том, что когда я загружаю excel файл в веб-приложении на локальном development сервере, то удаётся прочитать все имеющиеся товары в файле. Когда этот же файл загружаю в это же приложение, но развернутое на удалённом сервере(smarterasp.net хостер, если что), то из файла читается только 31648 товаров(всего 91246 вроде). Привожу сам код метода: Код: 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. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123.
Код сейчас немного грязный т.к. уже кучу костылей придумывал. Но этот код на локальном читает все строки из excel, а на удалённом только треть. То есть грубо говоря OleDbAdapter почему-то недозаполняется. Подскажите, куда копать? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2014, 20:48 |
|
Нужна помощь - разное поведение OleDbAdapter на локальном и удалённом сервере
|
|||
---|---|---|---|
#18+
Проблема, скорее, в битности драйвера. В топку Microsoft.Jet.OLEDB. Open XML SDK 2.5 for Microsoft Office. Вот пример http://codearticles.ru/articles/2419 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2014, 21:13 |
|
Нужна помощь - разное поведение OleDbAdapter на локальном и удалённом сервере
|
|||
---|---|---|---|
#18+
МСУ, спасибо большое. Теперь на парсинг xlsx испльзую предложенную вами библиотеку. Сначала пообщался с хостером. Он мне сказал, что это связано с тем, что я превышаю выделенный на мой сайт объём оперативной памяти из пула. Поэтому якобы коллекция обрезается. Вообщем переделал парсин на библиотеку Open XML SDK 2.5 - читает весь файл, но долго. Порядком 100 000 товаров - около 25-30 минут. Кстати проблема только с xlsx. xls читает без проблем и на удалённом используя OleDB Вообщем что это было я так и не понял ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2014, 19:58 |
|
Нужна помощь - разное поведение OleDbAdapter на локальном и удалённом сервере
|
|||
---|---|---|---|
#18+
iDotNetCoderOpen XML SDK 2.5 - читает весь файл, но долго. Порядком 100 000 товаров - около 25-30 минут. Сказки. Open XML SDK читает ничуть не медленнее, чем через драйвера. Ты, видимо, парсишь данные неоптимизированно. Выкладывай код и пример файла. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2014, 20:55 |
|
Нужна помощь - разное поведение OleDbAdapter на локальном и удалённом сервере
|
|||
---|---|---|---|
#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. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162.
Юзинги: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
И класс ExcelParser Код: 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. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184.
xls кстати и забыл уже - перевёл на NPOI - работает быстро. Пробывал xlsx перевети тоже на NPOI но также получал не все товары из файла на удалённом. То есть проблема сейчас во второй части где читаю xlsx через Open XML SDK ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2014, 21:31 |
|
Нужна помощь - разное поведение OleDbAdapter на локальном и удалённом сервере
|
|||
---|---|---|---|
#18+
А вот собственно файл https://yadi.sk/d/p7UYJNdNbUK46 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2014, 21:36 |
|
Нужна помощь - разное поведение OleDbAdapter на локальном и удалённом сервере
|
|||
---|---|---|---|
#18+
iDotNetCoder, да, ты прав. Тормоза в методе GetCellValue(SpreadsheetDocument document, Cell cell). Там идет постоянно обращение к OpenXmlElementList и заново фетчится эта IEnumerable. Переделал немного метод на GetCellValue(SpreadsheetDocument document, Cell cell, IList<OpenXmlElement> elements). Теперь летает. В http://codearticles.ru/articles/2419 тоже поправил. Пользуйся. P.S. Спасибо за дельное замечание. Вина была не в Open XML, а в моём криворучии Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2014, 09:50 |
|
Нужна помощь - разное поведение OleDbAdapter на локальном и удалённом сервере
|
|||
---|---|---|---|
#18+
ОГРОМАДНЕЙШЕЕ СПАСИБО!!!!!!!!!!!!!!!!!!!))))))))))))))))))))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2014, 11:02 |
|
Нужна помощь - разное поведение OleDbAdapter на локальном и удалённом сервере
|
|||
---|---|---|---|
#18+
iDotNetCoder, это тебе спасибо, что нашел дырку в коде :) P.S. Только что выложил на сайте еще более оптимизированный ExcelParser, скорость ещё выросла на 6% (можно скачать). То есть сейчас твой файл процессится за 2.9-3 секунды на моём железе. Дальше оптимизировать код уже сложно, разве что начать использовать SAX ридеры (OpenXmlReader, Open XML SDK SAX). Но там максимум что можно выжать, так это еще +2%. Так что не буду лезть в дебри, всё работает предельно просто, типизированно и шустро. Да уж, 30 минут против 3 секунд - это просто эпично :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2014, 11:19 |
|
|
start [/forum/topic.php?fid=17&fpage=18&tid=1349717]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
22ms |
get forum data: |
3ms |
get page messages: |
91ms |
get tp. blocked users: |
2ms |
others: | 250ms |
total: | 466ms |
0 / 0 |