插入不工作以将数据从一个表移动到新表

时间:2013-08-17 03:51:37

标签: sqlite

所以我有一个表,我用新的约束创建了一个表,并尝试将数据从旧表移动到新表但是它没有工作,它没有给出错误或任何东西。

我创建了旧表:

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

我无法理解。有人可以告诉我插入语句有什么问题来移动数据。最大的变化是桌面上的限制。

3 个答案:

答案 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);