|
|
|
Клонировать таблицу.
|
|||
|---|---|---|---|
|
#18+
Добрый день. Не получается правильно 'клонировать' таблицу с данными. Например, база имеет схему gen и таблицу tb1 с данными : Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. таблица tb1 получит последовательность "tb1_id_tb1_seq" для колонки serial "tb1.id_tb1" Функция myfun(), которая делает, что хотел, но криво : Код: plsql 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. т.е. получаю в 'новой' tb1 PK_колонку от временной - id_tb2 с "tb2_id_tb2_seq" подскажите, пожалуйста, как правильно сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2016, 13:13 |
|
||
|
Клонировать таблицу.
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. а если просто в tb1 удалить колонку id_tb1 а потом заново добавить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2016, 14:13 |
|
||
|
Клонировать таблицу.
|
|||
|---|---|---|---|
|
#18+
Alex_Wong, Наверное не точно выразился, нужно в исходной таблице ( tb1 ) изменить, специфическим образом, порядок следования записей (~20к строк, шесть столбцов, есть bytea) . Логику 'замеса' строк сделал, а вот сохранить полностью структуру исходной таблицы, по примеру из myfun(), - не получилось. Пока сделал так, - в tb2 вношу записи из tb1 в нужной последовательности; - удаляю tb1 со старыми данными; - создаю пустую tb1; - инсерт из tb2 в tb1; - drop tb2. не пухнет, но и не красиво ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2016, 15:01 |
|
||
|
Клонировать таблицу.
|
|||
|---|---|---|---|
|
#18+
bochkov, может удалить в исходной таблице tb1 старые данные, потом внести из временной, уже в нужной последовательности, и дропнуть последнюю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2016, 15:09 |
|
||
|
Клонировать таблицу.
|
|||
|---|---|---|---|
|
#18+
Alex_Wong, а откуда возникла такая странная задача упорядочить строки в таблице таким образом? командой cluster нельзя обойтись? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2016, 17:49 |
|
||
|
Клонировать таблицу.
|
|||
|---|---|---|---|
|
#18+
Alex_WongНаверное не точно выразился, нужно в исходной таблице ( tb1 ) изменить, специфическим образом, порядок следования записей Читаем https://ru.wikipedia.org/wiki/12_правил_Кодда правило 1 последнее предложение и выкидываем задачу как нахрен ненужную. Порядок выборки из таблицы недетерминирован вообще то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2016, 12:42 |
|
||
|
Клонировать таблицу.
|
|||
|---|---|---|---|
|
#18+
sanBezAlex_WongНаверное не точно выразился, нужно в исходной таблице ( tb1 ) изменить, специфическим образом, порядок следования записей Читаем https://ru.wikipedia.org/wiki/12_правил_Кодда правило 1 последнее предложение и выкидываем задачу как нахрен ненужную. Порядок выборки из таблицы недетерминирован вообще то Такое бывает полезно чтобы отсортировать записи в таблице на диске в порядке соответствующем порядку выборки в запросах. Т.е. если 99% запросов order by ctime limit/offset - то если данные упорядочены более менее на диске по ctime выборки с сортировкой по ctime МОГУТ стать быстрее на порядки (если данные читаются с механических дисков а не с памяти или SSD). Но вообще эта задача через CLUSTER команду решается. Чем CLUSTER не устраивает автора топика не ясно. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2016, 13:19 |
|
||
|
Клонировать таблицу.
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, да, именно для ускорения запросов с командой cluster дела не имел, знакомлюсь ... спасибо Вам и Alexius за подсказки по исходной теме, для кругозора, не подскажете, как изменить (переопределить) название последовательности ? - - - Например, есть две с одинаковой структурой таблицы : tb1 -- у неё есть последовательность "tb1_id_tb1_seq" по PK tb2 -- у неё есть последовательность "tb2_id_tb2_seq" по PK Хочу заменить tb1 на tb2, оставив последнюю : - удалил tb1 - переименовал название таблицы с tb2 на tb1 - переименовал название CONSTRAINT и COLUMN (так делал в приведенной выше ф-ции) Получил tb1 с последовательностью "tb2_id_tb2_seq" (смотрю через pgAdmin). Если смогу решить с последовательностью, будет ли такая tb1 вести себя аналогично исходной? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2016, 14:25 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=93&tid=1997274]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
47ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 297ms |

| 0 / 0 |
