Je souhaite conserver une table comme historique et la remplacer par une table vide. Comment puis-je faire cela via Management Studio?SQL Server copie toutes les lignes d'une table dans une autre table dupliquée i.e
Répondre
dupliquer votre table dans une table être archivé:
SELECT * INTO ArchiveTable FROM MyTable
Effacer toutes les entrées de votre table:
DELETE * FROM MyTable
Ne pas avoir serveur sql autour de tester mais je pense qu'il est juste:
insert into newtable select * from oldtable;
nice one! mais je ne fais jamais confiance à l'ordre des champs;) – ntziolis
S'il y avait un endroit où "SELECT *" devrait être utilisé dans une requête comme ceci ... Il fait une copie de la table sans avoir à savoir ce qu'il y a dedans. –
@Robin - Je suis d'accord qu'un * est un bon choix ici, ** SI ** l'ordre des champs est le même;) – ntziolis
Soit vous pouvez utiliser RAW SQL:
INSERT INTO DEST_TABLE (Field1, Field2)
SELECT Source_Field1, Source_Field2
FROM SOURCE_TABLE
Ou utilisez l'Assistant:
- Clic droit sur la base de données -> Tâches -> Exporter les données
- Sélectionnez la source/cible Base de données
- Sélectionnez la source/table cible et champs
- Copiez les données
execute Puis:
TRUNCATE TABLE SOURCE_TABLE
select * into x_history from your_table_here;
truncate table your_table_here;
+1, c'est mieux que la réponse sélectionnée. –
Pour plus d'informations sur pourquoi vous devriez utiliser TRUNCATE plutôt que DELETE voir http://dba.stackexchange.com/questions/30325/delete-vs-truncate – user1069816
essayer cette seule commande à la fois supprimer et insérer les données:
DELETE MyTable
OUTPUT DELETED.Col1, DELETED.COl2,...
INTO MyBackupTable
échantillon de travail:
--set up the tables
DECLARE @MyTable table (col1 int, col2 varchar(5))
DECLARE @MyBackupTable table (col1 int, col2 varchar(5))
INSERT INTO @MyTable VALUES (1,'A')
INSERT INTO @MyTable VALUES (2,'B')
INSERT INTO @MyTable VALUES (3,'C')
INSERT INTO @MyTable VALUES (4,'D')
--single command that does the delete and inserts
DELETE @MyTable
OUTPUT DELETED.Col1, DELETED.COl2
INTO @MyBackupTable
--show both tables final values
select * from @MyTable
select * from @MyBackupTable
SORTIE:
(1 row(s) affected)
(1 row(s) affected)
(1 row(s) affected)
(1 row(s) affected)
(4 row(s) affected)
col1 col2
----------- -----
(0 row(s) affected)
col1 col2
----------- -----
1 A
2 B
3 C
4 D
(4 row(s) affected)
Cela fonctionne:
select * into DestinationDatabase.dbo.[TableName1] from (
Select * from sourceDatabase.dbo.[TableName1])Temp
- 1. Copie de données de table MySQL dans une autre table
- 2. Synchronisation de table et copie dans une autre table
- 3. SQL Server: Copie de la colonne dans la table
- 4. sql: comment copier d'une table dans une autre table
- 5. SQL Server - mise à jour d'une table avec les première et dernière lignes d'une autre table
- 6. Dans SQL Server, comment comparer les lignes utilisant les noms de colonne d'une autre table?
- 7. Ajouter toutes les lignes multipliées par une autre ligne dans une autre table
- 8. Vidage de table SQL Server - pas toutes les colonnes
- 9. MySQL - Table dupliquée
- 10. Comment sélectionner les lignes d'une table qui ne correspondent pas à une autre table dans SQL?
- 11. SQL Server 2005: Insertion d'enregistrements manquants dans une table figurant dans une autre table de référence
- 12. Verrouiller une table dans SQL Server
- 13. Insérer une partie d'une table dans une autre table
- 14. Comment Copier des lignes d'une table vers une autre table?
- 15. SQL Server créant une table temporaire à partir d'une autre table
- 16. Restaurez une table d'une autre table
- 17. SQL Server, sélectionnez l'élément aléatoire de la table où id utilisé dans une autre table
- 18. Rechercher une table verrouillée dans SQL Server
- 19. Table de serveur sans table SQL Server
- 20. Table Diff dans SQL Server 2000
- 21. Autorisations de copie PostgreSQL d'une autre table
- 22. Comment copier une ligne d'une table SQL Server à une autre
- 23. Comment supprimer efficacement toutes les lignes d'une table dans DB2
- 24. Table temporaire SQL Server 2000 vs variable de table
- 25. Excel Table SQL Table
- 26. mysql :: insérer dans la table, les données d'une autre table?
- 27. comment supprimer toutes les lignes de la table d'accès
- 28. SQL Obtient des colonnes spécifiques d'une table et toutes les lignes d'une table jointe dans une requête
- 29. JOIN 3 lignes dans 1 table à 1 ligne dans une autre table
- 30. jQuery - comment sélectionner toutes les lignes de table entre deux rangées de table en même table
Champion! Merci! – iamjonesy
Cela ne fonctionne que si ArchiveTable n'a pas encore été créé, sinon vous obtiendrez l'erreur "Il y a déjà un objet nommé 'ArchiveTable' dans la base de données.". – Harvey
TRUNCATE est une meilleure option que DELETE. –