sqlite несимметричные столбцы и хранилище в файле - PullRequest
0 голосов
/ 17 октября 2011

У меня есть таблица SQlite3, в которой есть столбцы без типа, как в этом примере:

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

У меня есть конкретные причины не объявлять тип столбцов SensorID и Value. При вставке строк с числовыми SensorID и Value столбцами я замечаю, что они записываются как обычный текст в файл .db.

Когда я изменяю оператор CREATE TABLE на ...

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

... тогда значения кажутся записанными в некотором двоичном формате в файл .db.

Поскольку мне нужно записать несколько миллионов строк в базу данных, меня беспокоит размер файла, который генерируют эти данные, и поэтому я хотел бы избежать хранения значений в виде простого текста.

Могу ли я заставить SQLite использовать двоичное представление в файле базы данных без использования явно типизированных столбцов ?

Примечание. В настоящее время строки пишутся с помощью PHP :: PDO с использованием подготовленных операторов.

1 Ответ

2 голосов
/ 17 октября 2011

Пример в разделе 3.4 в документах sqlite о типах демонстрирует вставку числа как int в столбец без явного объявления типа. Я предполагаю, что хитрость заключается в том, чтобы исключить кавычки вокруг числа, что преобразует его в строку (которая, в случае типизированных столбцов, будет приведена обратно к числу).

В разделе 2 на странице, указанной выше, также содержится много информации о происходящих преобразованиях типов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...