sqlite无类型列和.db文件中的存储

时间:2011-10-17 09:47:29

标签: sqlite type-conversion

我有一个SQlite3表,其中包含无类型列,如下例所示:

CREATE TABLE foo(
  Timestamp INT NOT NULL,
  SensorID,
  Value,
  PRIMARY KEY(Timestamp, SensorID)
);

我有特殊原因不要声明列SensorIDValue的类型。 使用数字 SensorIDValue列插入行时,我注意到它们被写为{em>纯文本到.db文件中。

当我将CREATE TABLE语句更改为...

CREATE TABLE foo(
  Timestamp INT NOT NULL,
  SensorID INT,
  Value REAL,
  PRIMARY KEY(Timestamp, SensorID)
);

...然后值似乎以某种二进制格式写入.db文件。

由于我需要向数据库写入数百万行,因此我担心这些数据产生的文件大小,因此希望以纯文本形式避免值存储。

我是否可以强制SQLite在其数据库文件中使用二进制表示而不使用明确键入的列

注意:行目前使用预处理语句使用PHP :: PDO编写。

1 个答案:

答案 0 :(得分:2)

sqlite docs about types中3.4节中的示例演示了如何在没有显式类型声明的列中插入数字作为int。我猜诀窍就是忽略数字周围的引号,将其转换为字符串(在类型列的情况下,将被强制转换为数字)。

上面链接的页面中的第2部分也提供了有关正在进行的类型转换的大量信息。