Рант
Вы получаете этот "столбец ... не существует" ошибка с INSERT INTO "public"."my_table" ("1", ...
- потому что кавычки вокруг "1" означают, что это идентификатор , а не буквальный .
Даже если вы это исправите, запрос все равно выдаст ошибку из-за отсутствия ключевого слова VAULES
, как заметил Ян в другом ответе.
Правильная форма будет:
INSERT INTO "public"."my_table" VALUES ('1', ...
Если этот SQL был автоматически сгенерирован sqlite, плохо для sqlite.
В этой замечательной главе о синтаксисе SQL напечатано всего около 20 страниц. Мой совет тому, кто сгенерировал эту ВСТАВКУ: прочитайте ее :-) она окупится.
Реальное решение
Теперь, к делу ... Чтобы перенести таблицу из sqlite в postgres, вы должны использовать COPY, потому что это намного быстрее, чем INSERT.
Используйте формат CSV, как он понимается с обеих сторон.
В sqlite3:
create table tbl1(one varchar(20), two smallint);
insert into tbl1 values('hello',10);
insert into tbl1 values('with,comma', 20);
insert into tbl1 values('with "quotes"', 30);
insert into tbl1 values('with
enter', 40);
.mode csv
.header on
.out tbl1.csv
select * from tbl1;
В PostgreSQL (клиент PSQL):
create table tbl1(one varchar(20), two smallint);
\copy tbl1 from 'tbl1.csv' with csv header delimiter ','
select * from tbl1;
См. http://wiki.postgresql.org/wiki/COPY.