|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
SELECT * FORM table выдает ошибку чт оне может прочитать блок. SELECT * FROM table LIMIT 10 - выполняется SELECT * FROM table LIMIT 20 - не выполняется SELECT * FROM table LIMIT 10 OFFSET 50 - не выполняется Есть ли способ вытащить часть целых данных? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 16:27 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
с order by вообще никакой запрос не выполняется ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 16:29 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич ДереркSELECT * FORM table выдает ошибку чт оне может прочитать блок. SELECT * FROM table LIMIT 10 - выполняется SELECT * FROM table LIMIT 20 - не выполняется SELECT * FROM table LIMIT 10 OFFSET 50 - не выполняется Есть ли способ вытащить часть целых данных? если есть primary key id какой нить - то выбирать перебирая id от 0 и до максимального значения все те записи что получится выбрать а вообще реплика и backups - наше все. -- Maxim Boguk dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 16:40 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Maxim BogukКонстантин Сергеевич ДереркSELECT * FORM table выдает ошибку чт оне может прочитать блок. SELECT * FROM table LIMIT 10 - выполняется SELECT * FROM table LIMIT 20 - не выполняется SELECT * FROM table LIMIT 10 OFFSET 50 - не выполняется Есть ли способ вытащить часть целых данных? если есть primary key id какой нить - то выбирать перебирая id от 0 и до максимального значения все те записи что получится выбрать а вообще реплика и backups - наше все. -- Maxim Boguk dataegret.ru А может быть есть готовый скрипт, с обработкой ошибок? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 16:59 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич ДереркSELECT * FORM table выдает ошибку чт оне может прочитать блок. SELECT * FROM table LIMIT 10 - выполняется SELECT * FROM table LIMIT 20 - не выполняется SELECT * FROM table LIMIT 10 OFFSET 50 - не выполняется Есть ли способ вытащить часть целых данных? попробуйте перебирать по 1-му ctid--у. если это ваш побитый файл, конечно. а не партицированная табличка. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 17:46 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
qwwqКонстантин Сергеевич ДереркSELECT * FORM table выдает ошибку чт оне может прочитать блок. SELECT * FROM table LIMIT 10 - выполняется SELECT * FROM table LIMIT 20 - не выполняется SELECT * FROM table LIMIT 10 OFFSET 50 - не выполняется Есть ли способ вытащить часть целых данных? попробуйте перебирать по 1-му ctid--у. если это ваш побитый файл, конечно. а не партицированная табличка. тоже так думал, но там же формат (1 0)(1 1) и тд. Наверное проще по id. Проблема уже не срочная, т.к. табличку из экспорта востановили, хочу для себя скрипт сделать на будущее, с обработкой исключений. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 17:59 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич Дерерк, https://dba.stackexchange.com/questions/65964/how-do-i-decompose-ctid-into-page-and-row-numbers авторThis is the data type of the system column ctid. A tuple ID is a pair ( block number, tuple index within block ) that identifies the physical location of the row within its table. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 18:34 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
цтид генерировать можно примерно так ~ Код: sql 1. 2. 3. 4. 5. 6.
-- обходить таблу в do, позаписно (или поблочно) {for loop}, с exception when для блока. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 18:52 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
qwwqцтид генерировать можно примерно так ~ Код: sql 1. 2. 3. 4. 5. 6.
-- обходить таблу в do, позаписно (или поблочно) {for loop}, с exception when для блока. (0, 70) - потенциально мало... максимально 255-292 (смотря от архитектуры там кажется align есть до 28 или 32 байт в самом минимуме) но по сути - да. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 19:53 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич ДереркSELECT * FORM table выдает ошибку чт оне может прочитать блок. SELECT * FROM table LIMIT 10 - выполняется SELECT * FROM table LIMIT 20 - не выполняется SELECT * FROM table LIMIT 10 OFFSET 50 - не выполняется Есть ли способ вытащить часть целых данных? Вы лучше расскажите как вы этого добились. За 15 лет работы и больше 500 серверов с postgresql - не помню чтобы такое было хоть 1 раз. Это или очень постараться надо или совсем уж из говна и палок сервер собирать. -- Maxim Boguk dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 19:58 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Пытаюсь перелить данные из поврежденной таблички - не получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 12:06 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич ДереркПытаюсь перелить данные из поврежденной таблички - не получается. Берите платную поддержку если сами не можете разобраться :). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 12:07 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Пытаюсь так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Отваливается с ошибкой: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 12:11 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
как эту ошибку подваить? точнее надо как-то пропустить поврежденные записи, вызывающие эту ошибку. и встаивть только целые записи в новую таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 12:12 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич Дерерккак эту ошибку подваить? точнее надо как-то пропустить поврежденные записи, вызывающие эту ошибку. и встаивть только целые записи в новую таблицу. так вам написали line 5 блин line 5 это SELECT ct.ctid FROM corrupted_table cl JOIN (SELECT (point(b,n))::text::tid AS ctid FROM generate_series(0, 1024) b,generate_series(0, 10240) n) вот там и лечите (и заодно учитесь читать что вам база пишет думать головой). -- Maxim Boguk dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 12:23 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Maxim BogukКонстантин Сергеевич Дерерккак эту ошибку подваить? точнее надо как-то пропустить поврежденные записи, вызывающие эту ошибку. и встаивть только целые записи в новую таблицу. так вам написали line 5 блин line 5 это SELECT ct.ctid FROM corrupted_table cl JOIN (SELECT (point(b,n))::text::tid AS ctid FROM generate_series(0, 1024) b,generate_series(0, 10240) n) вот там и лечите (и заодно учитесь читать что вам база пишет думать головой). -- Maxim Boguk dataegret.ru ну конечно селект не идет, т.к. данные повреждены! как обойти это? чтобы только здоровые данные прочлись? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 12:58 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
спасибо, вроде заработало. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 13:40 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Maxim Bogukqwwqцтид генерировать можно примерно так ~ Код: sql 1. 2. 3. 4. 5. 6.
-- обходить таблу в do, позаписно (или поблочно) {for loop}, с exception when для блока. (0, 70) - потенциально мало... максимально 255-292 (смотря от архитектуры там кажется align есть до 28 или 32 байт в самом минимуме) но по сути - да. А скажите, можно как-нибудь определить пределы SELECT (point(b,n))::text::tid AS ctid FROM generate_series(0, 10 ) b,generate_series(0, 70 ) n для конкретной таблицы (которая повреждена) ? а то время выполнения завистит от этих параметров в геометрической прогрессии... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 13:53 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
SELECT MAX(ctid) FROM таблица вызывает ошибку ERROR: could not read block 1181 of relation base/16385/16807: read only 4096 of 8192 bytes SQL-состояние: XX001 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 14:27 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич ДереркMaxim Bogukпропущено... (0, 70) - потенциально мало... максимально 255-292 (смотря от архитектуры там кажется align есть до 28 или 32 байт в самом минимуме) но по сути - да. А скажите, можно как-нибудь определить пределы SELECT (point(b,n))::text::tid AS ctid FROM generate_series(0, 10 ) b,generate_series(0, 70 ) n для конкретной таблицы (которая повреждена) ? а то время выполнения завистит от этих параметров в геометрической прогрессии... см выше : автор(0, 70) - потенциально мало... максимально 255-292 (смотря от архитектуры там кажется align есть до 28 или 32 байт в самом минимуме) но по сути - да. геометрическую вы сильно получили. вам надо 2 вложенных Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
и никаких генераций и геометрических. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 15:06 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
qwwqКонстантин Сергеевич Дереркпропущено... А скажите, можно как-нибудь определить пределы SELECT (point(b,n))::text::tid AS ctid FROM generate_series(0, 10 ) b,generate_series(0, 70 ) n для конкретной таблицы (которая повреждена) ? а то время выполнения завистит от этих параметров в геометрической прогрессии... см выше : автор(0, 70) - потенциально мало... максимально 255-292 (смотря от архитектуры там кажется align есть до 28 или 32 байт в самом минимуме) но по сути - да. геометрическую вы сильно получили. вам надо 2 вложенных Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
и никаких генераций и геометрических. 10 и 70 мало. на 1024 и 1024 достает 15 тыс записей. Запустил на 2048 - выполняется уже два часа. Как можно определить необходимый и достаточный максимум для этого длиапазона? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 15:13 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
ну или можно как-то ускорить процесс? уже несколько часов фигачит. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 17:10 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич Дерерк10 и 70 мало. на 1024 и 1024 достает 15 тыс записей. Запустил на 2048 - выполняется уже два часа. Как можно определить необходимый и достаточный максимум для этого длиапазона? кол-во записей в блоке ограничено сверху размером блока и минимальным размером записи как писали выше: автормаксимально 255-292 спросить where ctid >.... не получится -- план сваливается в фуллскан. можете идти не позаписно , а поблочно, т.к. на where ctid =any(ARRAY[...]) даёт в плане примерно такое Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
как получить оценку сверху на колв-во блоков -- хз. присмотритесь к Код: sql 1. 2. 3. 4.
можно конечно на пи умножить, для верности. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 17:12 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
[quot qwwq] автормаксимально 255-292 т.е. это второе число из скобочек? Просто первое точно около 500 есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 17:14 |
|
|
start [/forum/topic.php?fid=53&fpage=69&tid=1996324]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 148ms |
0 / 0 |