【问题标题】:How to delete a field or row in Spatialite GUI如何在 Spatialite GUI 中删除字段或行
【发布时间】:2017-09-09 16:42:32
【问题描述】:

我正在尝试找到一种从现有 QGIS Spatialite 数据库文件中删除列/字段的简单方法。我是 Spatialite GUI 和 SQL 的新手,但我想完成上述工作。我右键单击图层(针对中国)并从上下文菜单中选择“显示列”。然后我收到一条错误消息:

SQL error: "near "-": syntax error"

所以我尝试执行语句:

PRAGMA table_info('for-China');
alter table 'for-China'
delete row 'note';

表格出现了,但 NOTE 行没有被删除:

我尝试使用 COLUMN 代替 ROW,也尝试使用 DROP 代替 DELETE,但 NOTE 仍然保持不变。我对如何删除 NOTE 行感到困惑。

【问题讨论】:

    标签: sql qgis spatialite


    【解决方案1】:

    我假设 spatialite 使用与 SQLite 相同的转义字符。因此,请尝试双引号:

    PRAGMA table_info("for-China");
    
    alter table "for-China" drop column note;
    

    您应该只对作为关键字的标识符或使用除字母数字、下划线(可能还有一些其他字符)以外的字符的标识符使用此选项。

    SQLite 还可以识别反引号和方括号,如 documentation 中所述。

    【讨论】:

    • 不幸的是,它不起作用。我也尝试过,但它也不起作用:PRAGMA table_info("for-China"); DELETE FROM "for-China" WHERE name = "NOTE";
    • @JAT86 。 . .我不知道“删除行”是什么。你似乎想要drop column
    • 我对 Spatialite 界面感到困惑。我不知道该列是 name 还是 10。 (如发布的图片所示),但是是的,我想在 name 下删除包含 NOTE 的整个列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    相关资源
    最近更新 更多