pg_dump и exclude-table

Artem_Nav
Дата: 03.02.2015 18:03:49
Версия 9.3
Создаю дамп базы и хочу исключить из него все таблицы, имена которых заканчиваются на "--". Пишу:
pg_dump.exe --exclude-schema=public --exclude-table='*--' --host=somehost --encoding=utf8 --file=filename dbname


Не получается. Что не так?
daevy
Дата: 03.02.2015 19:02:41
Artem_Nav
Версия 9.3
Создаю дамп базы и хочу исключить из него все таблицы, имена которых заканчиваются на "--". Пишу:
pg_dump.exe --exclude-schema=public --exclude-table='*--' --host=somehost --encoding=utf8 --file=filename dbname


Не получается. Что не так?


опустите кавычки, --exclude-table=*--
Artem_Nav
Дата: 03.02.2015 20:15:46
daevy, не помогло.
NikolayV81
Дата: 03.02.2015 20:41:02
Artem_Nav
Версия 9.3
Создаю дамп базы и хочу исключить из него все таблицы, имена которых заканчиваются на "--". Пишу:

--exclude-table="*--" 
или 
--exclude-table="*\-\-"

не совсем разобрался тут вроде двойные кавычки и экранирование обратным слешем
Artem_Nav
Дата: 03.02.2015 21:46:10
NikolayV81, тоже не помогло.

Уже и перебором попробовал все варианты, нагугленные из инета. Не работают!
pkorobeinikov
Дата: 03.02.2015 23:19:21
Artem_Nav, чтобы исключить таблицы из дампа Вам потребуется повторить опцию -T (--exclude-table) несколько раз с именами ненужных таблиц.

Под спойлером "почему так".
+
pg_dump.c:466 (9.5-devel)
case 'T':			/* exclude table(s) */
	simple_string_list_append(&table_exclude_patterns, optarg);
	break;
Artem_Nav
Дата: 03.02.2015 23:55:17
pkorobeinikov, супер!
Залез в сорцы, посмотрел на processSQLNamePattern() и оно заработало. Спасибо.

Как я понял, нужно было всего лишь задать маску схемы.
--exclude-table=*.*--


Так же, с ' - не работает, а с " - работает.
лопата
Дата: 04.02.2015 00:00:48
pkorobeinikov,

помнится в винде совсем уж упёрся с '*.*' и тут сработало
--exclude-table=*.*


--вот и верь после этого лю-удям
NikolayV81
Дата: 04.02.2015 09:14:17
Artem_Nav
pkorobeinikov, супер!
Залез в сорцы, посмотрел на processSQLNamePattern() и оно заработало. Спасибо.

Как я понял, нужно было всего лишь задать маску схемы.
--exclude-table=*.*--


Так же, с ' - не работает, а с " - работает.


[quot docs]
Note: The behavior of the -t switch is not entirely upward compatible with pre-8.2 PostgreSQL versions. Formerly, writing -t tab would dump all tables named tab, but now it just dumps whichever one is visible in your default search path. To get the old behavior you can write -t '*.tab'. Also, you must write something like -t sch.tab to select a table in a particular schema, rather than the old locution of -n sch -t tab.
[/quot]

Вероятно на исключения тоже наложили "default search path", что не очень логично выглядит