|
Размножение рекордсов в DB 2
|
|||
---|---|---|---|
#18+
Всем привет! Какой драйвер используют при экспорте БД из SQL Server в DB2 и возможно ли это вообще? Может существует какие-то определенные методы для экспорта БД больших размеров (100 000 000 рекордс) из SQL Server в DB2? Я - новичок в DB2. Работала только с SQL Server. Нужно размножить 1000 рекордсов до 100 000 000 рекордсов. Запустила в Comand editor (Версия 8.2) следующий одиночный batch: INSERT INTO TableName SELECT * from TableName FETCH FIRST 1000 ROWS ONLY; Работает. Но для получения 100 000 000 рекордсов необходимо написать цикл, а значит compound batch, т.е. состоящий из нескольких statements, разделенных ; . А как я понимаю, такой compound batch нужно куда-то вставить, например в stored procedure. Тогда вопрос , где писать и запускать stored procedure? Для начала, скажем, хотела посмотреть как работает простейший, написанный в SQL Server: DECLARE @step INT SET @step = 1000 PRINT 'my step is' + CONVERT(VARCHAR(20), @step) Как такой batch будет выглядеть в DB2 и где и как его запустить? Буду неоценимо признательна за совет Мой емеил - lenarodo@hotmail.com ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2005, 13:07 |
|
Размножение рекордсов в DB 2
|
|||
---|---|---|---|
#18+
Проще написать хранимую процедуру, только коммиты выставлять пореже не каждую строчку. Можно взять за отдельные деньги tools DB2 Generator который тебе по шаблонам чего хочешь нагенерит. Потом можешь взять DB2 Cookbook там есть примеры по генерации таблиц. например cкрипт генерящий 10000 сотрудников. Если тебе нужно больше пишешь хранимую процедуру которая 10000 раз выполняет подобный запрос. Код: plaintext 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2005, 14:38 |
|
Размножение рекордсов в DB 2
|
|||
---|---|---|---|
#18+
если нужно просто тестовыми данными заполнить балшую табличку то просто 1) создаем такую табличу, 2) отключаем логгирование по табличке 3) вставляем кучу записей... хоть мульен... PS. db2 -c- чтобы отключить автокоммит Код: plaintext 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2005, 16:48 |
|
Размножение рекордсов в DB 2
|
|||
---|---|---|---|
#18+
gardenmanесли нужно просто тестовыми данными заполнить балшую табличку то просто 1) создаем такую табличу, 2) отключаем логгирование по табличке 3) вставляем кучу записей... хоть мульен... PS. db2 -c- чтобы отключить автокоммит Код: plaintext 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.
------------------------------------ Спасибки, только пролейте свет на выражение: "отключаем логгирование по табличке". Для чего это нужно делать? А где пишутся процедуры и как запустить? Как будут выглядеть эти простые, безобидные строки для DB2, на которые он так жестоко ругается? DECLARE @step INT SET @step = 1000 PRINT 'my step is' + CONVERT(VARCHAR(20), @step) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2005, 20:16 |
|
Размножение рекордсов в DB 2
|
|||
---|---|---|---|
#18+
отключаем логгирование чтобы уменьшить I/O, и чтобы лог при такой длинной транзакции не переполнился, это делается так: alter table <имя таблички> activate not logged initially это будет действовать в течение одной транзакции до первого commit А простейшая процедура будет выглядеть так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
db2 -c- -td@ -f test.sql получаем: [SQL] Database Connection Information Database server = DB2/NT 8.2.0 SQL authorization ID = DB2ADMIN Local database alias = TEST DB20000I The SQL command completed successfully. DB20000I The SQL command completed successfully. Value of output parameters -------------------------- Parameter Name : B Parameter Value : 100 Return Status = 0 [/SQL] что касается оператора print - то такого нет в DB2 если хотите что-то вывести в таком роде - то создавайте временную таблицу в процедуре, заполняйте ее данными, открывайте по ней курсор и возвращайте recordset а вообще - самая классная книжка по этим примитивным фичам - DB2 COOKBOOK. вам про это сказали. И, чесслово, у меня нет особого желания дублировать документацию IBM. И, короче, не ищите те вещи и те прибамбасы, которые есть в MSSQL и Sybase. Все-таки это разные базы. Да, и еще, поищите в "Сравнении БД" топик по поводу временных таблиц. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2005, 21:57 |
|
Размножение рекордсов в DB 2
|
|||
---|---|---|---|
#18+
gardenmanотключаем логгирование чтобы уменьшить I/O, и чтобы лог при такой длинной транзакции не переполнился, это делается так: alter table <имя таблички> activate not logged initially это будет действовать в течение одной транзакции до первого commit А простейшая процедура будет выглядеть так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
db2 -c- -td@ -f test.sql получаем: [SQL] Database Connection Information Database server = DB2/NT 8.2.0 SQL authorization ID = DB2ADMIN Local database alias = TEST DB20000I The SQL command completed successfully. DB20000I The SQL command completed successfully. Value of output parameters -------------------------- Parameter Name : B Parameter Value : 100 Return Status = 0 [/SQL] что касается оператора print - то такого нет в DB2 если хотите что-то вывести в таком роде - то создавайте временную таблицу в процедуре, заполняйте ее данными, открывайте по ней курсор и возвращайте recordset а вообще - самая классная книжка по этим примитивным фичам - DB2 COOKBOOK. вам про это сказали. И, чесслово, у меня нет особого желания дублировать документацию IBM. И, короче, не ищите те вещи и те прибамбасы, которые есть в MSSQL и Sybase. Все-таки это разные базы. Да, и еще, поищите в "Сравнении БД" топик по поводу временных таблиц. Удачи! -------------------------- Запустила простеишую процедуру со следующим результатом: Fix the problem and retry. This could involve catalog access, a change to the statement, a grant of the execute privilege to the routine invoker, the addition of new functions, and/or a change to the SQL path. sqlcode : -440 sqlstate : 42884 Мой user- db2admin вроде имеет все привелегии ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2005, 11:44 |
|
|
start [/forum/topic.php?fid=43&msg=33053667&tid=1605914]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 286ms |
total: | 421ms |
0 / 0 |