Используя MySQL, я могу выполнить запрос:
SHOW CREATE TABLE MyTable;
И он вернет оператор создания таблицы для указанной таблицы. Это полезно, если у вас уже есть созданная таблица, и вы хотите создать такую же таблицу в другой базе данных.
Можно ли получить оператор вставки для уже существующей строки или набора строк? В некоторых таблицах много столбцов, и было бы неплохо, если бы у меня была возможность получить оператор вставки для переноса строк в другую базу данных без необходимости записывать оператор вставки или без экспорта данных в CSV, а затем импортировать те же данные в другую базу данных.
Просто чтобы уточнить, что я хочу, это то, что будет работать следующим образом:
SHOW INSERT Select * FROM MyTable WHERE ID = 10;
И верните мне следующее:
INSERT INTO MyTable(ID,Col1,Col2,Col3) VALUES (10,'hello world','some value','2010-10-20');
mysql>
приглашения. Никто пока не делает.Ответы:
Кажется, нет способа получить
INSERT
операторы из консоли MySQL, но вы можете получить их, используя mysqldump, как предложил Роб. Укажите,-t
чтобы пропустить создание таблицы.источник
--hex-blob
если у вас есть столбцы BLOB-объектов (например, abit(1)
), в противном случае он будет записан в виде строки, что может привести кUnknown command '\0'
ошибке при выполнении INSERT.В MySQL Workbench вы можете экспортировать результаты любого запроса в одну таблицу в виде списка
INSERT
операторов. Просто запустите запрос, а затем:Export/Import
с результатамиFormat
выбораSQL INSERT statements
Save
Export
источник
Поскольку вы скопировали таблицу с помощью SQL, созданного SHOW CREATE TABLE MyTable , вы можете просто сделать следующее, чтобы загрузить данные в новую таблицу.
Если вам действительно нужны операторы INSERT, то единственный известный мне способ - использовать mysqldump http://dev.mysql.com/doc/refman/5.1/en/mysqldump.htm . Вы можете дать ему возможность просто выводить данные для конкретной таблицы и даже ограничивать строки.
источник
Я написал функцию PHP, которая будет делать это. Мне нужно было сделать оператор вставки на случай, если запись должна быть заменена после удаления для таблицы истории:
источник
O' Malley
, сгенерированные запросы будут иметь синтаксические ошибки из-за несоответствия одинарных кавычек. Вы должны по крайней мере использовать,mysql_real_escape_string
если идти по этому маршруту.Код ноутбука Lift работает нормально, но я подумал, что людям могут понравиться некоторые вещи.
Обработчик базы данных является аргументом, а не жестко закодированным. Использовал новый API MySQL. Заменил $ id на необязательный аргумент $ where для большей гибкости. Использовал real_escape_string на тот случай, если кто-либо когда-либо пытался сделать инъекцию sql и избежать простых поломок с кавычками. Использовал
INSERT table (field...) VALUES (value...)...
синтаксис, чтобы поля определялись только один раз, а затем просто перечисляли значения каждой строки (implode - это круто). Поскольку Найджел Джонсон указал на это, я добавилNULL
обработку.Я использовал,
$array[$key]
потому что я волновался, что это может как-то измениться, но если что-то не так ужасно, это не должно так или иначе.источник
INTO
включения,INSERT INTO {$tables}
но в таблице нет обработки нулей.INTO
является обязательным . Я добавил обработку нулей к нему.Я использую программу SQLYOG, где я могу сделать запрос выбора, указать на результаты и выбрать экспорт как sql. Это дает мне инструкции для вставки.
источник
На рабочем месте MySQL выполните следующее:
Нажмите Сервер> Экспорт данных
На вкладке «Выбор объекта» выберите нужную схему.
Затем выберите нужные таблицы с помощью списка справа от схемы.
Выберите местоположение файла для экспорта скрипта.
Нажмите Готово.
Перейдите к вновь созданному файлу и скопируйте операторы вставки.
источник
Если вы хотите получить «вставку оператора» для своей таблицы, вы можете попробовать следующий код.
В результате вы получите оператор вставки:
INSERT INTO
your_table
(field_1
,field_2
,...
,field_n
) VALUES (value_11, value_12, ..., value_1n);INSERT INTO
your_table
(field_1
,field_2
,...
,field_n
) VALUES (value_21, value_22, ..., value_2n);/ ................................................. .... /
INSERT INTO
your_table
(field_1
,field_2
,...
,field_n
) VALUES (value_m1, value_m2, ..., value_mn);где m - количество записей в your_table
источник
Вы можете использовать Sequel Pro, чтобы сделать это, есть возможность «получить как вставить заявление» для полученных результатов
источник
В PHPMyAdmin вы можете:
Вы можете применить это ко многим строкам одновременно, если вы выделите их и нажмете кнопку «Копировать» в нижней части таблицы, а затем «Предварительный просмотр SQl».
источник
Для пользователей HeidiSQL :
Если вы используете HeidiSQL, вы можете выбрать строки, которые вы хотите получить оператором вставки. Затем щелкните правой кнопкой мыши> Экспортировать строки сетки> выберите «Копировать в буфер» для «Вывод цели», «Выбор» для «Выбор строки», чтобы не экспортировать другие строки, «SQL INSERT» для «Формат вывода»> Нажмите «ОК».
Оператор вставки будет внутри вашего буфера обмена.
источник
С PDO вы можете сделать это таким образом.
источник
Вы можете создать SP с кодом ниже - он также поддерживает NULLS.
источник
Я думаю, что ответ, предоставленный Laptop Lifts, является лучшим ... но так как никто не предложил подход, который я использую, я решил, что должен вмешаться. Я использую phpMyAdmin для настройки и управления своими базами данных большую часть времени. В нем вы можете просто поставить галочки рядом с нужными строками, а внизу нажать «Экспорт» и выбрать SQL. Это даст вам инструкции INSERT для любых выбранных вами записей. Надеюсь это поможет.
источник
Исходя из ваших комментариев, ваша цель - перенести изменения базы данных из среды разработки в производственную среду.
Лучший способ сделать это - сохранить изменения базы данных в исходном коде и, следовательно, отслеживать их в вашей системе контроля версий, такой как git или svn.
вы можете быстро приступить к работе с чем-то вроде этого: https://github.com/davejkiger/mysql-php-migrations
как очень простое пользовательское решение в PHP, вы можете использовать такую функцию:
Затем вы можете создать скрипт миграции, который обновит любую среду в соответствии с вашими требованиями.
источник