Quelle est la meilleure méthode pour copier les données d'une table d'une base de données vers une table d'une autre base de données lorsque les bases de données sont sous des utilisateurs différents?
Je sais que je peux utiliser
INSERT INTO database2.table2 SELECT * from database1.table1
Mais ici, le problème est que les deux database1
et database2
sont sous différents utilisateurs MySQL. Donc user1
peut accéder database1
uniquement et user2
peut database2
uniquement accéder . Une idée?
Réponses:
Si vous avez un accès shell, vous pouvez utiliser
mysqldump
pour vider le contenu dedatabase1.table1
et le dirigermysql
versdatabase2
. Le problème ici est quetable1
c'est toujourstable1
.Vous devez peut-être renommer
table1
entable2
avec une autre requête. D'un autre côté, vous pouvez utiliser sed pour changer table1 en table2 entre les tubes en.Si table2 existe déjà, vous pouvez ajouter les paramètres au premier mysqldump qui ne permettent pas de créer la table crée.
la source
CREATE TABLE db1.table1 SELECT * FROM db2.table1
où db1 est la destination et db2 est la source
la source
ALTER TABLE db1.table1 ADD PRIMARY KEY (id); ALTER TABLE db1.table1 MODIFY COLUMN id INT AUTO_INCREMENT;
Si vous utilisez PHPMyAdmin, cela pourrait être très simple. Supposons que vous disposiez des bases de données suivantes:
DB1 a une table des utilisateurs que vous souhaitez copier dans DB2
Sous PHPMyAdmin, ouvrez DB1, puis accédez à la table des utilisateurs.
Sur cette page, cliquez sur l' onglet "Opérations" en haut à droite. Sous Opérations, recherchez la section Copier la table vers (database.table):
& vous avez terminé!
la source
MySql Workbench : fortement recommandé
Cela permettra de gérer facilement les problèmes de migration. Vous pouvez migrer les tables sélectionnées des bases de données sélectionnées entre MySql et SqlServer. Vous devriez absolument essayer.
la source
mysql Workbench
migration àSQLYog
la copie de la base de données de? D'après mon aperçu rapide, il semble qu'ils sont très similaires, mais mysql workbench est une fonctionnalité plus récenteJ'utilise Navicat pour MySQL ...
Cela facilite toutes les manipulations de bases de données!
Sélectionnez simplement les deux bases de données dans Navicat, puis utilisez.
la source
Je sais que c'est une vieille question, il suffit de répondre pour que quiconque débarque ici ait une meilleure approche.
Depuis la version 5.6.10, vous pouvez faire
Reportez-vous à la documentation ici: https://dev.mysql.com/doc/refman/5.7/en/create-table-like.html
la source
Si vos tables sont sur le même serveur mysql, vous pouvez exécuter ce qui suit
la source
Utilisez la fonctionnalité d'exportation et d'importation de MySql Workbench. Étapes:
1. Sélectionnez les valeurs souhaitées
créer une nouvelle table en utilisant des colonnes similaires à la première
tout sélectionner dans le nouveau tableau
Cliquez sur Importer et sélectionnez le fichier CSV que vous avez exporté à l'étape 2
la source
Voici un autre moyen simple:
INSERT INTO DB2.TB1 SELECT * from DB1.TB1;
la source
Essayer
mysqldbcopy
( documentation )Ou vous pouvez créer une " table fédérée " sur votre hôte cible. Les tables fédérées vous permettent de voir une table à partir d'un autre serveur de base de données comme s'il s'agissait d'un serveur local. ( documentation )
Après avoir créé la table fédérée, vous pouvez copier les données avec les
insert into TARGET select * from SOURCE
la source
Avec MySQL Workbench, vous pouvez utiliser l'exportation de données pour vider uniquement la table dans un fichier SQL local (données uniquement, structure uniquement ou structure et données), puis l'importation de données pour la charger dans l'autre base de données.
Vous pouvez ouvrir plusieurs connexions (différents hôtes, bases de données, utilisateurs) en même temps.
la source
Un moyen simple d'obtenir toutes les requêtes dont vous avez besoin est d'utiliser les données de information_schema et concat.
Vous obtiendrez alors une liste de résultats qui ressemble à ceci:
Vous pouvez ensuite simplement exécuter ces requêtes.
Cependant, cela ne fonctionnera pas avec les vues MySQL. Vous pouvez les éviter en ajoutant à
AND TABLE_TYPE = 'BASE TABLE'
partir de la requête initiale:la source
Est-ce quelque chose que vous devez faire régulièrement ou juste une seule fois?
Vous pouvez faire une exportation (par exemple en utilisant phpMyAdmin ou similaire) qui scriptera votre table et son contenu dans un fichier texte, puis vous pourrez le réimporter dans l'autre base de données.
la source
utilisez les étapes ci-dessous pour copier et insérer des colonnes d'une table de base de données vers une autre table de base de données -
2.INSERT INTO db2.tablename SELECT columnname1, columnname2 FROM db1.tablename;
la source
Créez d'abord la décharge. Ajout des
--no-create-info --no-create-db
indicateurs s'iltable2
existe déjà:Entrez ensuite le
user1
mot de passe. Ensuite:Entrez ensuite le
user2
mot de passe.Identique à la réponse @helmors mais l'approche est plus sécurisée car les mots de passe ne sont pas exposés en texte brut à la console (recherche inversée, renifleurs de mots de passe, etc.). Une autre approche convient si elle est exécutée à partir d'un fichier de script avec des restrictions appropriées placées sur ses autorisations.
la source
IN xampp exportez simplement la table requise sous forme de fichier .sql, puis importez-la dans le fichier requis
la source
créer une table destination_customer comme sakila.customer (Database_name.tablename), cela ne copiera que la structure de la table source, pour que les données soient également copiées avec la structure, créez la table destination_customer comme select * from sakila.customer
la source
CREATE TABLE LIKE
dans la question, alors pourquoi mentionner que c'est faux? Et il n'y a aucune explication sur la façon dont cette réponse résout le problème qu'aucun utilisateur n'a accès aux tables de l'autre.