我有一个SQlite3表,其中包含无类型列,如下例所示:
CREATE TABLE foo(
Timestamp INT NOT NULL,
SensorID,
Value,
PRIMARY KEY(Timestamp, SensorID)
);
我有特殊原因不要声明列SensorID
和Value
的类型。
使用数字 SensorID
和Value
列插入行时,我注意到它们被写为{em>纯文本到.db
文件中。
当我将CREATE TABLE
语句更改为...
CREATE TABLE foo(
Timestamp INT NOT NULL,
SensorID INT,
Value REAL,
PRIMARY KEY(Timestamp, SensorID)
);
...然后值似乎以某种二进制格式写入.db文件。
由于我需要向数据库写入数百万行,因此我担心这些数据产生的文件大小,因此希望以纯文本形式避免值存储。
我是否可以强制SQLite在其数据库文件中使用二进制表示而不使用明确键入的列?
注意:行目前使用预处理语句使用PHP :: PDO编写。
答案 0 :(得分:2)
sqlite docs about types中3.4节中的示例演示了如何在没有显式类型声明的列中插入数字作为int。我猜诀窍就是忽略数字周围的引号,将其转换为字符串(在类型列的情况下,将被强制转换为数字)。
上面链接的页面中的第2部分也提供了有关正在进行的类型转换的大量信息。