URL: https://www.overclockers.at/coding-stuff/ms-sql-tabellen-mergen_225457/page_1 - zur Vollversion wechseln!
kurze frage, ich bin blutiger Anfänger im Umgang mit MS SQL Server 2008 und dem Management Studio 10.
Was ich gemacht habe:
delete
from table
where id between 1 and 10000
gut, das war nicht so schlau und jetzt brauch ich die 10.000 zeilen wieder. ich hab die komplette tabelle noch auf der backup datenbank. ich kann sie aber nicht komplett neu einspielen, da in der zwischenzeit ein paar inserts passiert sind.
ich muss das ganze also wieder zusammenfügen. mangels erfahrung und mangels bisherigem interesse an datenbanken hab ich noch wenig quellen wo ich mich erkundigen kann.
ich bin dankber über hilfestellungen und auch links zum thema MS SQL, ich hab auch vor mich in zukunft mehr einzulesen.
derzeit will ich das probleme aber nur fixen
kA ob das bei mssql funktioniert, aber das einfachste wär imho ein dblink mit anschließendem
Code: SQLselect * into tabelle from tabelle@backupdb where id between 1 and 10000
jo, die meisten probleme hab ich eh mit dem MS sql studio und dem DB-connect wizzard, haha.
sonst hätte ich eh gleich die tabelle im vorhinein gesichert, aber hab auch im google nix brauchbares gefunden wie das easy geht.
edit: aber zur DB kann ich eh verbinden, werds dann gleich ausprobieren. thx für den tipp.
alternativ könntest du dir auf der backupdb einfach die ausgabe von
als insertscript oder excel exportieren lassen und in deiner db importieren.Code: SQLselect * from table where id between 1 and 10000
import von excel kanns, aber export des resultats eines select-satements bekomm ich nur per CSV hin.
edit: zuerst kompletten export in excel und dann die überflüssigen datensätze löschen wird leider nicht hinhaun bei 1,4mio zeilen (nehme ich an).
gut, ich hab jetzt beide tabellen in einer datenbank und will sie jetzt mergen, der ansatz von meepmeep funktioniert leider nicht. kann es sein, dass MS SQL das gar nicht kann?
fehlermeldung ist folgende:
There is already an object named 'testtable' in the database.
statement:
Code: SQLselect * into [testtable] from [table_temp] where id between 1 and 10000
Zitat von Smutgut, ich hab jetzt beide tabellen in einer datenbank und will sie jetzt mergen, der ansatz von meepmeep funktioniert leider nicht. kann es sein, dass MS SQL das gar nicht kann?
fehlermeldung ist folgende:
There is already an object named 'testtable' in the database.
statement:Code: SQLselect * into [testtable] from [table_temp] where id between 1 and 10000
was jedoch nur hinhaun wird wenn die spaltenanzahl/-reihenfolge gleich isCode: SQLinsert into zieltabelle select spalte1, spalte2,... from quelltabelle
ist MSSQL wirklich so katastrophal? Den ersten Select auf der Backupdb der relevanten einträge in eine csv, danach ein csv import in der Echtdatenbank und fertig. Sö würd ich es quick and dirty auf mysql machen...
Die Tabelle ist 1:1 nur dass halt die Einträge 0-xxx fehlen, diese Spalte ist auch zugleich der primärschlüssel.
zum Vorschlag von wexo: mit * kann ich nicht arbeiten? Das heißt ich muss alle spalten angeben, was eigentlich auch kein Problem ist. Nur was mach ich jetzt mit der ID Spalte die wie gesagt der PK ist?
Ja ist auch eine Möglichkeit.Zitat von Crash Overrideist MSSQL wirklich so katastrophal? Den ersten Select auf der Backupdb der relevanten einträge in eine csv, danach ein csv import in der Echtdatenbank und fertig. Sö würd ich es quick and dirty auf mysql machen...
Also normalerweise geht das so:
.Code: SQLINSERT INTO Zieltabelle SELECT * from Quelltabelle WHERE whatever
Wenn man eine Identity Spalte mit inserten will dann muss man vorher schreiben:
Code: SQLset identity_insert <table> on
danke für die hilfe, ich habs jetzt mit folgendem statement hinbekommen:
Code: SQLinsert into [table_new] select* from [table_backup] where id between 1428734 and 1429599
einfach die mssql doku lesen das nächste mal :P
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025