我们正在尝试使用sqlalchemy将大型表(大于本地内存空间)从PostgreSQL数据库迁移到本地sqlite3数据库,但是当尝试在sqlite3数据库中创建表时遇到语法错误。通读其他文章,建议的修复似乎不适用于此错误。我们这里缺少一些用法详细信息吗?
# reflect table from remote postgresql database
read_engine = create_engine('postgresql://dbusername:dbuserpassword@server/dbname')
meta = MetaData()
raw = Table('db_table', meta, autoload=True, autoload_with=read_engine)
# write table to local sqlite3 database
write_engine = create_engine('sqlite:///db_local.sqlite3')
table.create(write_engine)
这是我们得到的错误:
OperationalError: (sqlite3.OperationalError) near "(": syntax error
[SQL:
CREATE TABLE db_table (
id INTEGER DEFAULT nextval('db_table_id_seq'::regclass) NOT NULL,
created_at TIMESTAMP,
updated_at TIMESTAMP,
data TEXT,
device_key TEXT,
format TEXT,
uuid TEXT,
CONSTRAINT db_table_pkey PRIMARY KEY (id)
)
]
答案 0 :(得分:0)
我认为问题在于SQLite不支持DEFAULT nextval(...)
- nextval()
是Postgres特定的函数,不属于SQLite数据库。
我相信,您需要重写CREATE TABLE
语句才能使用AUTOINCREMENT
。
披露:我是一名EnterpriseDB (EDB)员工