Поддержка представлений с дампом Mysql

Это просто: 27 декабря 2015 года - день 1 недели 1 недели 2016 года (и 27 декабря 2026 года - день 1 недели 1 недели 2027 года). Это можно проверить, добавив следующие строки:

SimpleDateFormat odf = new SimpleDateFormat("YYYY-ww-u");
System.out.println(odf.format(d1));
System.out.println(odf.format(d2));
System.out.println(odf.format(d3));

Если SimpleDateFormat выводит дату, он может использовать все поля: год, месяц, день, день недели, неделю месяца, неделю в году , недельный год и т. д.

При разборе SimpleDateFormat ожидает соответствующий набор значений: день, месяц, год или день недели, неделю в году, в неделю-год. Поскольку вы поставляли недельный год, но не поставляли день недели и неделю в году, значения для значений принимались равными 1.


Фактические значения зависят от вашей локали:

  • , какая неделя года - неделя 1
  • , который является первым днем ​​недели

(см. https: // docs.oracle.com/javase/7/docs/api/java/util/GregorianCalendar.html#week_and_year)

В моей системе (с использованием de-ch locale, с "EEE MMM dd HH: mm: ss zzz yyyy - YYYY-ww-u "как формат) Я получаю

Mo Jan 04 00:00:00 MEZ 2016 - 2016-01-1
Mo Jan 04 00:00:00 MEZ 2016 - 2016-01-1
Mo Jan 04 00:00:00 MEZ 2027 - 2027-01-1

26
задан Artem Russakovskii 1 November 2009 в 20:34
поделиться

3 ответа

Резервное копирование представлений для нескольких баз данных легко, просто используя information_schema:

mysql --skip-column-names --batch -e 'select CONCAT("DROP TABLE IF EXISTS ", TABLE_SCHEMA, ".", TABLE_NAME, "; CREATE OR REPLACE VIEW ", TABLE_SCHEMA, ".", TABLE_NAME, " AS ", VIEW_DEFINITION, "; ") table_name from information_schema.views'
9
ответ дан olliiiver 15 October 2019 в 08:01
поделиться

Я хотел бы как можно более точно придерживаться вывода mysqldump , как запрашивал OP, поскольку он включает в себя множество информации о представлении, которое не может быть восстановлено простым запросом из INFORMATION_SCHEMA.

Вот как я создаю сценарий представления развертывания из моей исходной базы данных:

SOURCEDB="my_source_db"
mysql $SOURCEDB --skip-column-names  -B -e \
"show full tables where table_type = 'view'" \
| awk '{print $1}' \
| xargs -I {} mysqldump $SOURCEDB {} > views.sql
0
ответ дан gerrit_hoekstra 15 October 2019 в 08:01
поделиться

Под резервным копированием я предполагаю, что вы имеете в виду просто определение без данных.

Похоже, что сейчас mysqldump не делает различий между ВИДАМИ и ТАБЛИЦАМИ, поэтому, возможно, лучше всего do заключается в том, чтобы либо явно указать представления в командной строке для mysqldump, либо вычислить этот список динамически перед mysqldump, а затем передать его, как и раньше.

Вы можете получить все представления в конкретной базе данных, используя этот запрос:

ПОКАЗАТЬ ПОЛНЫЕ ТАБЛИЦЫ, ГДЕ table_type = 'view';

3
ответ дан 28 November 2019 в 05:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: