Próbuję wstawić wszystkie wartości z jednej tabeli do drugiej. Ale instrukcja insert akceptuje wartości, ale chciałbym, aby akceptowała wybór * z initial_Table. czy to możliwe?
źródło
Próbuję wstawić wszystkie wartości z jednej tabeli do drugiej. Ale instrukcja insert akceptuje wartości, ale chciałbym, aby akceptowała wybór * z initial_Table. czy to możliwe?
W rzeczywistości instrukcja insert ma do tego odpowiednią składnię. O wiele łatwiej jest jednak podać nazwy kolumn zamiast wybierać „*”:
INSERT INTO new_table (Foo, Bar, Fizz, Buzz)
SELECT Foo, Bar, Fizz, Buzz
FROM initial_table
-- optionally WHERE ...
Lepiej to wyjaśnię, ponieważ z jakiegoś powodu ten post otrzymuje kilka głosów negatywnych.
Składnia INSERT INTO ... SELECT FROM jest stosowana, gdy tabela, do której wstawiasz („nowa_tabela” w moim przykładzie powyżej) już istnieje. Jak powiedzieli inni, składnia SELECT ... INTO służy do tworzenia nowej tabeli jako części polecenia.
Nie określiłeś, czy nowa tabela ma zostać utworzona jako część polecenia, więc INSERT INTO ... SELECT FROM powinno wystarczyć, jeśli tabela docelowa już istnieje.
Spróbuj tego:
źródło
Możesz wstawić za pomocą zapytania podrzędnego w następujący sposób:
źródło
Od tutaj:
źródło
Możesz użyć
select into
oświadczenia. Zobacz więcej na W3Schools .źródło
Jest łatwiejszy sposób, w którym nie musisz wpisywać żadnego kodu (idealny do testowania lub jednorazowych aktualizacji):
Uwaga - 1 : Jeśli kolumny nie są w odpowiedniej kolejności, jak w tabeli docelowej, zawsze możesz wykonać krok 2 i wybrać kolumny w tej samej kolejności, jak w tabeli docelowej
Uwaga - 2 - Jeśli masz kolumny tożsamości, wykonaj,
SET IDENTITY_INSERT sometableWithIdentity ON
a następnie wykonaj powyższe kroki, a na końcu wykonajSET IDENTITY_INSERT sometableWithIdentity OFF
źródło
Jeśli przenosisz dużo danych na stałe, tj. Nie zapełniasz tabeli tymczasowej, polecam użycie SQL Server Import / Export Data do mapowania tabeli na tabelę.
Narzędzie importu / eksportu jest zwykle lepsze niż zwykły SQL, gdy masz konwersje typów i możliwe obcięcie wartości w mapowaniu. Ogólnie rzecz biorąc, im bardziej złożone jest mapowanie, tym wydajniej używasz narzędzia ETL, takiego jak Integration Services (SSIS), zamiast bezpośredniego języka SQL.
Narzędzie importu / eksportu jest w rzeczywistości kreatorem SSIS i możesz zapisać swoją pracę jako pakiet dtsx.
źródło
Myślę, że to stwierdzenie może zrobić, co chcesz.
źródło
źródło