powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Перенос одной таблицы на другой диск.
8 сообщений из 8, страница 1 из 1
Перенос одной таблицы на другой диск.
    #39545149
Добрый день,

подскажите как это лучше сделать?

ОС виндоус.
...
Рейтинг: 0 / 0
Перенос одной таблицы на другой диск.
    #39545163
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мандатная метка,

Заводите tablespace . Переносите туда табличку (и индексы по желанию/необходимости). Переносить можно через alter table штатными средствами с блокировкой на время копирования или использовать pg_repack без соответственно тяжёлой блокировки.
...
Рейтинг: 0 / 0
Перенос одной таблицы на другой диск.
    #39545170
Melkijмандатная метка,

Заводите tablespace . Переносите туда табличку (и индексы по желанию/необходимости). Переносить можно через alter table штатными средствами с блокировкой на время копирования или использовать pg_repack без соответственно тяжёлой блокировки.


Спасибо, читаю.


pg_repack не работает на виндоус
...
Рейтинг: 0 / 0
Перенос одной таблицы на другой диск.
    #39545192
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мандатная меткаMelkijмандатная метка,

Заводите tablespace . Переносите туда табличку (и индексы по желанию/необходимости). Переносить можно через alter table штатными средствами с блокировкой на время копирования или использовать pg_repack без соответственно тяжёлой блокировки.


Спасибо, читаю.


pg_repack не работает на виндоус


Вот тут пишут:
You can also use Microsoft Visual C++ 2010 to build the program on Windows. There are project files in the msvc folder.

http://reorg.github.io/pg_repack/
...
Рейтинг: 0 / 0
Перенос одной таблицы на другой диск.
    #39545479
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мандатная метка,

если кодить не лень (и фк не мешают) -- новую табличку деете. в новом тейблспейсе.
наследуетесь старой от нее.
одной транзой ренеймитесь новой -- в старое имя. старой -- в какоенть ненужное.

далее спокойно мелкими транзами переливаетесь из старой в новую.

ну и на кошечках сначала. ессно. т.к. триггера могут мешаться, констрейнты . и прочая правда жизни.
...
Рейтинг: 0 / 0
Перенос одной таблицы на другой диск.
    #39545508
Ролг Хупинмандатная меткапропущено...



Спасибо, читаю.


pg_repack не работает на виндоус


Вот тут пишут:
You can also use Microsoft Visual C++ 2010 to build the program on Windows. There are project files in the msvc folder.

http://reorg.github.io/pg_repack/


Есть ли хотя бы один живой человек, который это сделал?
...
Рейтинг: 0 / 0
Перенос одной таблицы на другой диск.
    #39545509
qwwqмандатная метка,

если кодить не лень (и фк не мешают) -- новую табличку деете. в новом тейблспейсе.
наследуетесь старой от нее.
одной транзой ренеймитесь новой -- в старое имя. старой -- в какоенть ненужное.

далее спокойно мелкими транзами переливаетесь из старой в новую.

ну и на кошечках сначала. ессно. т.к. триггера могут мешаться, констрейнты . и прочая правда жизни.



Спасибо.

Тут только на счет наследования не понял, скажите, как это делается?
...
Рейтинг: 0 / 0
Перенос одной таблицы на другой диск.
    #39545590
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мандатная метка,

rtfm: https://www.postgresql.org/docs/current/static/sql-commands.html

test
Код: sql
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.
--выполнять в 1 сессии, по 1-й команде за раз.
CREATE TABLE public.old_table
(
t_id serial NOT NULL
,fld text
,PRIMARY KEY (t_id)
)
;
INSERT into public.old_table (fld) 
select concat (g::text,'::',timestamp'now') from generate_series(0,100) g;

create table new_table (
LIKE public.old_table
INCLUDING DEFAULTS
--INCLUDING IDENTITY --9.6
INCLUDING CONSTRAINTS
INCLUDING INDEXES
-- INCLUDING STORAGE
INCLUDING COMMENTS
);
ALTER TABLE old_table INHERIT new_table;

-----trick-prepare---------
select dblink.dblink_connect('session1' ,concat('dbname=',current_database(),' port=5434 user=postgres'));--clients
select dblink.dblink_connect('session2' ,concat('dbname=',current_database(),' port=5434 user=postgres'));--DBA
---start trick:---
select dblink.dblink_exec('session1' ,'INSERT into public.old_table (fld) 
								select concat (g::text,''::'',timestamp''now'')
								from generate_series(1,3) g;')
		
from generate_series(0,100) g
where g<>50 or 'OK'=(dblink.dblink_exec('session2' ,'ALTER TABLE old_table RENAME TO old_table_old;
								ALTER TABLE new_table RENAME TO old_table;'
								))

;
-----/trick----------
--chck;---
SELECT * FROM ONLY old_table;
SELECT * FROM ONLY old_table_old;
SELECT tableoid::regclass::text, * FROM /*ONLY*/ old_table order by t_id;
update old_table set fld= fld ||fld WHERE t_id<10; 
SELECT tableoid::regclass::text, * FROM /*ONLY*/ old_table order by t_id;

...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Перенос одной таблицы на другой диск.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]