SQlite: wybierz?

80

Nie jestem pewien, czy mogę użyć polecenia select into do importowania danych z innej tabeli, takiej jak ta:

select * into
  bookmark1 
from bookmark;    

Czy to prawda, że ​​SQlite nie obsługuje tej składni? czy są jakieś inne alternatywy?

Glaucon
źródło

Odpowiedzi:

50

Możesz spróbować tego zapytania:

insert into bookmark1 select * from bookmark
Nick Dandoulakis
źródło
12
Zakłada się, że zakładka bookmark1 już istnieje, podczas gdy wybierz w tworzy nową tabelę.
wit.
@vit, oczywiście. Dotyczy to przypadku, gdy chcemy ponownie zaimportować w tabeli.
Nick Dandoulakis
@Nick: Jestem pewien, że to wiesz, po prostu pomyślałem, że powinno to być jasne dla każdego, dlaczego może później natknąć się na to pytanie. :)
wit.
182

Mógłbyś:

create table bookmark1 as select * from bookmark;
wit
źródło
2
przepraszam, nie mogę dać żadnej uwagi, bo jestem nowy, ale twoja sugestia działa dobrze. Dzięki =)
Glaucon
3
Doskonała odpowiedź, zwięzła i na temat. +1 i wiele chwał.
zeFree
jakikolwiek sposób, aby to zadziałało w dwóch sytuacjach, gdzie tabela już istnieje (nadpisuje) i gdzie nie (tworzy nową tabelę)?
oob
W rzeczywistości jest to lepsza odpowiedź niż przyjęta jako odpowiedź!
MelloG,
1
@Glaucon teraz możesz zagłosować za tą odpowiedzią i wybrać ją jako zaakceptowaną odpowiedź. Pomoże każdemu, kto tu przyjedzie
Avision
23

Zakładam, że bookmark1 to nowa utworzona przez Ciebie tabela, która jest taka sama jak tabela zakładek. W takim przypadku możesz użyć następującego formatu.

CREATE TABLE bookmark1 AS SELECT * FROM bookmark;

Możesz też użyć instrukcji insert z podzapytaniem. Aby uzyskać informacje na temat różnych opcji instrukcji wstawiania, zobacz: SQL w rozumieniu SQLite

neo
źródło
11
create table NewTable as
select * from OldTable where 1 <> 1

Spowoduje to skopiowanie struktury danych.

Wadood Chaudhary
źródło
1
To całkiem sprytne.
TheLegendaryCopyCoder
opakuj ten kod SQL w blok try (lub równoważną konstrukcję) w wybranym języku programowania.
knb