|
|
|
VC+ADO+MS SQL Server как быстро вставить записи?
|
|||
|---|---|---|---|
|
#18+
Есть задача из Access-a нужно перетянуть частично данные в БД на MS SQL Server-e... т.е. выбираются строки из таблицы Access-a и вставляются кодом типа try { pCommand->ActiveConnection = pConnGlob; pCommand->CommandText = "AddNewDocument"; pCommand->CommandType = adCmdStoredProc; pCommand->Parameters->Item[ _variant_t( (long) 1 ) ]->Value = _variant_t( (int)itNumLom); pCommand->Parameters->Item[ _variant_t( (long) 2 ) ]->Value = _variant_t( (int)m_iNumLO ); pCommand->Parameters->Item[ _variant_t( (long) 3 ) ]->Value = _variant_t( (LPCTSTR)stIDMAN ); pCommand->Parameters->Item[ _variant_t( (long) 4 ) ]->Value = _variant_t( (LPCTSTR)stName ); pCommand->Parameters->Item[ _variant_t( (long) 5 ) ]->Value = _variant_t( (LPCTSTR)stDocDate ); pCommand->Parameters->Item[ _variant_t( (long) 6 ) ]->Value = _variant_t( (LPCTSTR)stSeria ); pCommand->Parameters->Item[ _variant_t( (long) 7 ) ]->Value = _variant_t( (LPCTSTR)stDocNum ); pCommand->Parameters->Item[ _variant_t( (long) 8 ) ]->Value = _variant_t( (LPCTSTR)stMesto ); pCommand->Parameters->Item[ _variant_t( (long) 9 ) ]->Value = _variant_t( (LPCTSTR)stCountry ); pCommand->Execute( NULL, NULL, adCmdStoredProc ); bRet = true; } catch( _com_error &e ) { str.Format( "Ошибка %s (%s)\n%s!",(LPCSTR)e.Source(), (LPCSTR) e.Description(),(LPCSTR)e.ErrorMessage()); } но таким образом в секунду вставляется 20-70 записей в секунду, но т.к. данных много порядка 2-3 милиона записей то получается очень долго :( может кто подскажет как сделать более быструю вставку, заранее благодарю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2007, 16:17:24 |
|
||
|
VC+ADO+MS SQL Server как быстро вставить записи?
|
|||
|---|---|---|---|
|
#18+
SQL Server Data Transformation Services? -- Здесь у нас туманы и дожди, здесь у нас холодные рассветы, Здесь на неизведанном пути ждут замысловатые сюжеты! Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2007, 17:17:17 |
|
||
|
VC+ADO+MS SQL Server как быстро вставить записи?
|
|||
|---|---|---|---|
|
#18+
Leshij SQL Server Data Transformation Services? -- Здесь у нас туманы и дожди, здесь у нас холодные рассветы, Здесь на неизведанном пути ждут замысловатые сюжеты! Posted via ActualForum NNTP Server 1.4 к сожалению что либо стандартное не совсем подходит, есть моменты которые проще реализовать в коде, уточню задачу, есть 200 БД в виде mdb файлов, с одинаковой структурой, при импорте, из названия файла, скажем получаем номер дома, к которому относится ин-фя в файле и т.д. и таких моментов куча... я не очень представляю как DTS заставить в зависимости от названия файла вставлять скажем в поле таблицы "номер_дома" нужное значение... да вообщем вопрос и не в том, используя DTS импорт БД полностью занимает 15 мин. а прога мучается 1 час 30 минут. :( я так понимаю что я не оптимально написал код т.е. простой INSERT в цикле очень медлителен относительно метода который использует те же DTS! может кто подскажет как написать код котоый будет вставлять скажем за раз 100-200 строк ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2007, 18:12:58 |
|
||
|
VC+ADO+MS SQL Server как быстро вставить записи?
|
|||
|---|---|---|---|
|
#18+
В ADO можно использовать Batch Update mode и вставлять данные напрямую в таблицу, миную хранимку. Так будет отсылаться меньше запросов к серверу. Другое решение -- загнать все данные, к-ые сейчас есть -- базу в Эксесс и файлики с домами как таблицы на SQL Server и уже оттуда конвертировать в нужные данные sql-запросом. И еще один совет -- для такой задачи гораздо проще будет использовать скриптовые языки типа JScript или VBScript вместо C++. По времени выполнения это будет не намного дольше -- большая часть времени будет тратиться на общение с сервером и операции с файлами. -- Здесь у нас туманы и дожди, здесь у нас холодные рассветы, Здесь на неизведанном пути ждут замысловатые сюжеты! Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2007, 23:33:44 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34916864&tid=2027860]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
191ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 490ms |

| 0 / 0 |
