SQLite3创建含空格列名的表导入数据异常,如何解决?
解决SQLite3保留空格列名并正常导入CSV数据的问题
问题核心原因
你遇到的问题有两个关键节点:
- 查询语句错误:你写的
SELECT 'Order ID' FROM Returnedsss;是在输出字符串常量'Order ID',而非名为Order ID的列,所以结果全是这个固定字符串。 - 标识符引用规范:SQLite对带空格的列名、表名这类标识符有特定引用规则,导入和查询时都需要遵循规则才能正确映射。
具体解决步骤
1. 规范创建表的语句
创建带空格的列名时,推荐用双引号或方括号包裹(SQL标准的标识符引用方式),替代单引号更稳妥:
CREATE TABLE Returnedsss ( Returned Text, "Order ID" Text, PRIMARY KEY ("Order ID") );
2. 确保CSV表头与列名完全匹配
检查你的Returns.csv第一行表头,必须包含Order ID(和表列名完全一致,包括空格),示例CSV开头格式如下:
Returned,Order ID Yes,1001 No,1002
3. 执行导入命令(保持现有格式即可)
确认文件路径正确后,执行以下导入命令:
.tables .mode csv .separator , .import --csv "C://Business_Analytics//SQlite//data//Returns.csv" Returnedsss
4. 修正查询语句(正确引用带空格的列)
查询带空格的列时,必须用双引号或方括号包裹列名(单引号仅用于字符串):
-- 方式1:双引号(推荐,符合SQL标准) SELECT "Order ID" FROM Returnedsss; -- 方式2:方括号(兼容SQL Server风格) SELECT [Order ID] FROM Returnedsss;
验证结果
执行修正后的查询语句,即可正常获取Order ID列的真实数据,而非固定字符串。
内容的提问来源于stack exchange,提问作者Noah Hickman
相关产品推荐
相关产品推荐

