2014-11-29 1 views
2

Мне нужно сбросить стол для ежедневного перевода.
mysqldump требует привилегии LOCK TABLES. К сожалению, LOCK TABLES не применяется на уровне таблицы, только на уровне базы данных, и я не хочу предоставлять пользователю MySQL большой доступ. Есть ли способ сделать что-то вроде ...Как я могу сбрасывать таблицу mysql без использования mysqldump?

/USR/бен/MySQL -u имя_пользователя -ppassword -D daterbase -e "выберите * из таблицы"> outfile.sql

... но есть он выводится в формате sql вместо формата результата запроса?
Заранее благодарен

ответ

2

Если таблица представляет собой таблицу InnoDB, вы можете использовать mysqldump --single-transaction dbname tablename.

С помощью транзакции ему не нужно ничего блокировать.

Или вы можете использовать SELECT ... INTO OUTFILE, но это дампы в текстовом формате с разделителями табуляции, а не в формате SQL. См. На mysql для деталей.

+0

Отлично! Благодаря! –

+0

oops ... попробовал это и столкнулся с дублирующейся ключевой проблемой, потому что ключи копировались ... поэтому я вернулся к чертежной доске. Мне нужно скопировать записи без ключей, чтобы я мог вставить их на принимающую сторону. Поскольку я не уточнил, что в моем вопросе я должен задать новый вопрос? –

+0

У Mysqldump нет возможности пропустить ключевой столбец. Итак, вы вернетесь к использованию 'SELECT INTO OUTFILE', а затем импортируете этот файл с помощью mysqlimport'. –