所以我有一个表,我用新的约束创建了一个表,并尝试将数据从旧表移动到新表但是它没有工作,它没有给出错误或任何东西。
我创建了旧表:
CREATE TABLE Elements (
_id INTEGER PRIMARY KEY,
Element TEXT,
Symbol TEXT,
MW TEXT)
使用以下方式创建新表:
CREATE TABLE "Element" (
"_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"ElementName" TEXT,
"Symbol" TEXT,
"MW" REAL,
UNIQUE("ElementName") ON CONFLICT ABORT,
UNIQUE("Symbol") ON CONFLICT ABORT)
这些是移动数据的语句,但它们都没有插入任何内容:
INSERT INTO "Element" ("ElementName","Symbol","MW")
SELECT "Element", "Symbol","MW"
FROM "Elements"
INSERT INTO "Element"
SELECT * FROM "Elements"
INSERT INTO Element (ElementName,Symbol,MW)
SELECT Element,Symbol,CAST(MW AS REAL) FROM Elements
INSERT INTO Element (_id,ElementName,Symbol,MW)
SELECT NULL,Element,Symbol,MW
FROM Elements
我无法理解。有人可以告诉我插入语句有什么问题来移动数据。最大的变化是桌面上的限制。
答案 0 :(得分:1)
我试过,这对我有用。
INSERT INTO Element SELECT * FROM Elements
刚从元素和元素
中删除了""
答案 1 :(得分:1)
通过删除表并重新创建它而没有其中的所有引号来解决问题。我不知道这是否是SQLite数据库浏览器中的错误或者是什么。我使用下面的陈述,它运行良好:
CREATE TABLE Element (
_id INTEGER PRIMARY KEY AUTOINCREMENT,
ElementName TEXT,
Symbol TEXT,
MW REAL,
UNIQUE(ElementName) ON CONFLICT ABORT,
UNIQUE(Symbol) ON CONFLICT ABORT)
INSERT INTO Element SELECT * FROM Elements
答案 2 :(得分:0)
怎么样:
INSERT INTO Element (ElementName, Symbol, MW)
SELECT o.Element, o.Symbol, o.MW
FROM Elements as o
如果失败,请比较这些输出:
SELECT COUNT(*) FROM Elements;
SELECT COUNT(Element) FROM (SELECT DISTINCT Element FROM Elements);
SELECT COUNT(Symbol) FROM (SELECT DISTINCT Symbol FROM Elements);