Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Перенос одной таблицы на другой диск. / 8 сообщений из 8, страница 1 из 1
31.10.2017, 12:19
    #39545149
Перенос одной таблицы на другой диск.
Добрый день,

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

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

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

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


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


pg_repack не работает на виндоус
...
Рейтинг: 0 / 0
31.10.2017, 13:05
    #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
31.10.2017, 18:05
    #39545479
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос одной таблицы на другой диск.
мандатная метка,

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

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

ну и на кошечках сначала. ессно. т.к. триггера могут мешаться, констрейнты . и прочая правда жизни.
...
Рейтинг: 0 / 0
31.10.2017, 18:34
    #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
31.10.2017, 18:35
    #39545509
Перенос одной таблицы на другой диск.
qwwqмандатная метка,

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

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

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



Спасибо.

Тут только на счет наследования не понял, скажите, как это делается?
...
Рейтинг: 0 / 0
31.10.2017, 20:33
    #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
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Перенос одной таблицы на другой диск. / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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