2011-10-17 20 views
0

我有了無類型列像在這個例子中SQLITE3表:sqlite的無類型的列和存儲在.db文件

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

我有特殊原因不能申報列SensorIDValue的類型。 當數字SensorIDValue列插入行我注意到,他們被寫成純文本.db文件。

當我改變CREATE TABLE語句...

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

...那麼價值觀似乎在某些二進制格式.db文件進行寫操作。

因爲我需要向數據庫寫入數百萬行,所以我擔心這些數據產生的文件大小,所以希望避免以純文本形式存儲值。

我可以強制SQLite在其數據庫文件中使用二進制表示而不使用明確鍵入的列

注意:當前行使用預準備語句使用PHP :: PDO編寫。

回答

2

第3.4節sqlite docs about types中的示例演示如何在列中插入一個數字作爲int,而不顯式聲明類型。我想訣竅是忽略數字周圍的引號,將其轉換爲字符串(在鍵入列的情況下,將被強制回到數字中)。

上面鏈接的頁面中的第2部分還提供了有關發生類型轉換的大量信息。

+0

沒錯。顯然,在PHP-PDO中使用準備好的語句時,所有字段都會被轉義,甚至是數字字段。使用正常(未準備好)的查詢而不用引號就可以實現。 –