En utilisant MySQL, je peux exécuter la requête:
SHOW CREATE TABLE MyTable;
Et il renverra l'instruction create table pour la table spécifique. Ceci est utile si vous avez déjà créé une table et que vous souhaitez créer la même table sur une autre base de données.
Est-il possible d'obtenir l'instruction d'insertion pour une ligne déjà existante ou un ensemble de lignes? Certaines tables ont de nombreuses colonnes, et ce serait bien pour moi de pouvoir obtenir une instruction d'insertion pour transférer des lignes vers une autre base de données sans avoir à écrire l'instruction d'insertion, ou sans exporter les données au format CSV, puis importer les mêmes données dans l'autre base de données.
Juste pour clarifier, ce que je veux, c'est quelque chose qui fonctionnerait comme suit:
SHOW INSERT Select * FROM MyTable WHERE ID = 10;
Et faites-moi revenir ce qui suit:
INSERT INTO MyTable(ID,Col1,Col2,Col3) VALUES (10,'hello world','some value','2010-10-20');
mysql>
invite. Aucun pour l'instant.Réponses:
Il ne semble pas y avoir de moyen d'obtenir les
INSERT
instructions de la console MySQL, mais vous pouvez les obtenir en utilisant mysqldump comme Rob l'a suggéré. Spécifiez-t
pour omettre la création de table.la source
--hex-blob
si vous avez des colonnes blob (par exemple abit(1)
), il l'écrirait sous forme de chaîne sinon, ce qui pourrait entraîner uneUnknown command '\0'
erreur lors de l'exécution de INSERT.Dans MySQL Workbench, vous pouvez exporter les résultats de toute requête à table unique sous forme de liste d'
INSERT
instructions. Exécutez simplement la requête, puis:Export/Import
au-dessus des résultatsFormat
sélectionnerSQL INSERT statements
Save
Export
la source
Puisque vous avez copié la table avec le SQL produit par SHOW CREATE TABLE MyTable , vous pouvez simplement faire ce qui suit pour charger les données dans la nouvelle table.
Si vous voulez vraiment les instructions INSERT, alors le seul moyen que je connaisse est d'utiliser mysqldump http://dev.mysql.com/doc/refman/5.1/en/mysqldump.htm . Vous pouvez lui donner des options pour simplement vider les données d'une table spécifique et même limiter les lignes.
la source
J'ai écrit une fonction php qui fera cela. J'avais besoin de faire une déclaration d'insertion au cas où un enregistrement doit être remplacé après la suppression d'une table d'historique:
la source
O' Malley
, les requêtes générées présenteront des erreurs de syntaxe dues à des guillemets simples incompatibles. Vous devriez au moins utilisermysql_real_escape_string
si vous empruntez cette voie.Le code de Laptop Lift fonctionne bien, mais il y avait quelques choses que je pensais que les gens pourraient aimer.
Le gestionnaire de base de données est un argument, non codé en dur. Utilisé la nouvelle api mysql. Remplacement de $ id par un argument optionnel $ where pour la flexibilité. Utilisé real_escape_string au cas où quelqu'un aurait déjà essayé de faire une injection SQL et pour éviter de simples ruptures impliquant des guillemets. Utilisé la
INSERT table (field...) VALUES (value...)...
syntaxe pour que les champs ne soient définis qu'une seule fois, puis listent simplement les valeurs de chaque ligne (imploser est génial). Parce que Nigel Johnson l'a souligné, j'ai ajouté laNULL
manipulation.J'avais l'habitude
$array[$key]
parce que j'avais peur que cela puisse changer d'une manière ou d'une autre, mais à moins que quelque chose ne cloche horriblement, cela ne devrait pas de toute façon.la source
INTO
sur ,INSERT INTO {$tables}
mais il n'y a pas de manipulation dans le tableau des valeurs nulles.INTO
est complètement facultatif . J'y ai ajouté la gestion des nulls.J'utilise le programme SQLYOG où je peux faire une requête de sélection, pointer sur les résultats et choisir l'exportation en sql. Cela me donne les instructions d'insertion.
la source
Dans le banc de travail MySQL, procédez comme suit:
Cliquez sur Serveur> Exportation de données
Dans l'onglet Sélection d'objet, sélectionnez le schéma souhaité.
Ensuite, sélectionnez les tables souhaitées à l'aide de la zone de liste à droite du schéma.
Sélectionnez un emplacement de fichier pour exporter le script.
Cliquez sur Terminer.
Accédez au fichier nouvellement créé et copiez les instructions d'insertion.
la source
Si vous souhaitez obtenir une "instruction d'insertion" pour votre table, vous pouvez essayer le code suivant.
En conséquence, vous aurez une déclaration d'insers:
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);, où m - nombre d'enregistrements dans votre_table
la source
vous pouvez utiliser Sequel pro pour ce faire, il existe une option pour 'obtenir une instruction d'insertion' pour les résultats obtenus
la source
Dans PHPMyAdmin, vous pouvez:
Vous pouvez l'appliquer sur plusieurs lignes à la fois si vous les sélectionnez et cliquez sur copier à partir du bas du tableau, puis sur Aperçu SQl
la source
Pour les utilisateurs HeidiSQL :
Si vous utilisez HeidiSQL, vous pouvez sélectionner la (les) ligne (s) que vous souhaitez obtenir une instruction d'insertion. Puis faites un clic droit> Exporter les lignes de la grille> sélectionnez "Copier dans le presse-papier" pour "Cible de sortie", "Sélection" pour "Sélection de ligne" afin de ne pas exporter d'autres lignes, "INSERT SQL" pour "Format de sortie"> Cliquez sur OK.
L'instruction d'insertion sera à l'intérieur de votre presse-papiers.
la source
Avec PDO, vous pouvez le faire de cette façon.
la source
Vous pouvez créer un SP avec le code ci-dessous - il prend également en charge NULLS.
la source
Je pense que la réponse fournie par Laptop Lifts est la meilleure ... mais puisque personne n'a suggéré l'approche que j'utilise, j'ai pensé que je devrais intervenir. J'utilise phpMyAdmin pour configurer et gérer mes bases de données la plupart du temps. Dans celui-ci, vous pouvez simplement mettre des coches à côté des lignes que vous voulez, et en bas, cliquez sur "Exporter" et choisissez SQL. Il vous donnera des instructions INSERT pour les enregistrements que vous avez sélectionnés. J'espère que cela t'aides.
la source
Sur la base de vos commentaires, votre objectif est de migrer les modifications de base de données d'un environnement de développement vers un environnement de production.
La meilleure façon de faire est de conserver les modifications de votre base de données dans votre code source et par conséquent de les suivre dans votre système de contrôle de source tel que git ou svn.
vous pouvez être opérationnel rapidement avec quelque chose comme ceci: https://github.com/davejkiger/mysql-php-migrations
en tant que solution personnalisée très basique en PHP, vous pouvez utiliser une fonction comme celle-ci:
vous pouvez ensuite créer un script de migration qui mettra à jour n'importe quel environnement selon vos spécifications.
la source