Вверх ↑
Этот топик читают: Гость
Ответов: 655
Рейтинг: 18
#1186: 2013-11-08 01:06:53 ЛС | профиль | цитата
Т.е сам SQLite уже конвертирует полученный HEX в бинарные данные и затем записывает в таблицу?

а при чтении из базы он конвертирует бинарные данные в HEX который мы уже HexToStream обрабатываем?
------------ Дoбавленo в 01.06:
nesco, Tad, спасибо! Разобрался!
Блин внимательность видимо приходит вместе с жизненным опытом и возрастом...пойду "прокачивать" внимательность чтением мануалов по SQL...
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#1187: 2013-11-08 09:55:41 ЛС | профиль | цитата
Кстати,
1. начиная с версии библиотеки 3.7.11 поддерживается и такой INSERT

#sql
INSERT INTO <имя таблицы> (Col1, Col2) values
('val1', 1),
('val2', 2),
('val3', 3),
('val4', 4),
('val5', 5);
В таблицу добавится 5 строк.
2. Если, при создании таблицы, определить в ней колонку как INTEGER PRIMARY KEY со словом AUTOINCREMENT

#sql
CREATE TABLE client(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT);
то будет автоматически создана таблица sqlite_sequence с полями name и seq
В name запишется <имя таблицы>, а в seq - число записей в ней.
Это позволяет простым

#sql
SELECT seq FROM sqlite_sequence WHERE name="имя таблицы";
мгновенно получить число записей огромной таблицы (SELECT count() работает медленно)
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Гость
Ответов: 17029
Рейтинг: 0
#1188: 2013-11-08 11:51:26 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2021-05-21 12:29:05
карма: 0

0
Ответов: 8886
Рейтинг: 823
#1189: 2013-11-08 12:02:06 ЛС | профиль | цитата
[flood]Как мало надо человеку для счастья! [/flood]
карма: 19

0
Ответов: 952
Рейтинг: 4
#1190: 2013-11-10 10:16:19 ЛС | профиль | цитата
Подскажите по такому вопросу.
Есть БД с кучей записей. Среди них есть множество повторяющихся записей. Полностью идентичных.
Как удалить повторяющиеся, оставив из всех (запись может повторяться раз 5-7) повторяющихся только 1?
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#1191: 2013-11-10 10:51:51 ЛС | профиль | цитата
Для этого надо знать структуру таблицы ( строку CREATE TABLE ...................)
и не надо допускать записи повторений. Проверяй на повтор при записи.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 704
Рейтинг: 44
#1192: 2013-11-10 12:46:35 ЛС | профиль | цитата
user_asm писал(а):
Подскажите по такому вопросу.
Есть БД с кучей записей. Среди них есть множество повторяющихся записей. Полностью идентичных.
Как удалить повторяющиеся, оставив из всех (запись может повторяться раз 5-7) повторяющихся только 1?

Вот читай http://www.hiasm.com/xf/topic.php?p=131868
Если сильно напрягает повторяющие строки используй оператор DISTINCT
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#1193: 2013-11-10 13:53:22 ЛС | профиль | цитата
Kazbek17 писал(а):
Если сильно напрягает повторяющие строки используй оператор DISTINCT
Чем больше БД - тем больше время выборки.
Привести таблицу к нормальному виду можно так:

#sql
CREATE TABLE prom(перечислить все колонки из своей таблицы); -- создать временную таблицу
INSERT INTO prom SELECT * FROM <cвоя таблица> GROUP BY <перечислить все колонки своей таблицы через запятую>;-- записать в неё неповторяющиеся (или,как писал Kazbek17,используй оператор DISTINCT)
DROP TABLE <cвоя таблица>; -- удалить исходную
ALTER TABLE prom RENAME TO <cвоя таблица>; -- переименовать временную в свою
VACUUM;
Если в исходной таблице есть колонка INTEGER PRIMARY KEY, то эта схема не сработает.
Поэтому
Tad писал(а):
Для этого надо знать структуру таблицы

Во избежание неприятностей - нужно сначала создать копию своей БД
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 952
Рейтинг: 4
#1194: 2013-11-10 18:09:03 ЛС | профиль | цитата
Повторяющиеся они потому что мне дали 10 файлов БД. Часть была с одинаковым содержимым, часть с изменениям в записях, как-то так. Их надо было слить в 1 файл. Структура фалов - одинаковая. Я слил в 1 файл. Теперь надо почистить от дубликатов.
INTEGER PRIMARY KEY в таблице нет.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#1195: 2013-11-10 18:16:18 ЛС | профиль | цитата
Значит можно сделать так, как написано выше.
Или одной командой:

DELETE FROM <cвоя таблица> WHERE ROWID NOT IN (SELECT MIN(ROWID) 
FROM <cвоя таблица> GROUP BY < перечислить все колонки своей таблицы через запятую>);
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 257
Рейтинг: -2
#1196: 2013-11-12 10:12:39 ЛС | профиль | цитата
выполяю Insert or Replace into sklad (id,name) Values (1,2); в итоге в остальных ячейках все данные стираются, то есть он не только переписывет заданные значения в заданных полях, но и стирает все данные из полей, которые не указаны в скобках. Как быть? Можно ли применить UPDATE вместе с INSERT и какой тогда долже быть синтаксис?
------------ Дoбавленo в 10.12:
в строку подставляются значения из форматстр, по этому забивание в ручную полей для update не вариант, исходный запрос выглядит так Insert or Replace into table (id,%1) values (%2). - это первый раз при записи строк, дальше уже при обновлении id известен. Каким образом можно обновить некоторые ячейки чтоб не заменялись значения в остальных?
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#1197: 2013-11-12 15:21:28 ЛС | профиль | цитата
http://www.sqlite.org/lang.html
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 257
Рейтинг: -2
#1198: 2013-11-12 15:53:14 ЛС | профиль | цитата
Tad писал(а):
http://www.sqlite.org/lang.html


да, отлично. там пишут что группами нельзя update делать. Я надеялся что подскажешь варианты
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#1199: 2013-11-12 18:26:21 ЛС | профиль | цитата
mudfactory, я почему-то нифига не могу понять твои мысли.
Что значит "группами нельзя update делать" ?
UPDATE <имя таблицы> SET колонка1=значение1 , колонка2=Значение; 
Будут изменены значения перечисленных колонок во всех строках(записях) таблицы
UPDATE <имя таблицы> SET колонка1=значение1 , колонка2=Значение WHERE id=5;
Будут изменены значения перечисленных колонок в строке(записи) таблицы у которой id=5
UPDATE <имя таблицы> SET колонка1=значение1 , колонка2=Значение WHERE name="Вася";
Будут изменены значения перечисленных колонок в строках(записях) таблицы у которых в колонке name есть "Вася".
UPDATE <имя таблицы> SET колонка1=значение1 , колонка2=Значение LIMIT 10 OFFSET 20;
Будут изменены значения перечисленных колонок в строках(записях) таблицы у 10-и строк, начиная с 20-ой.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 704
Рейтинг: 44
#1200: 2013-11-12 19:50:33 ЛС | профиль | цитата
mudfactory писал(а):
Каким образом можно обновить некоторые ячейки чтоб не заменялись значения в остальных?

mudfactory Какие в столбце строки запросишь в Update для редактирование, те и будут изменяться, те которые не запрашивал, изменения производиться не будут, если конечно они не имеют то условие, которое ты создаешь для редактирование, это уже другой разговор. Для чего существует оператор <Where? - для того на чтобы предоставить, к какому условию склоняться> если у тебя например колонка1=значение Вася и колонка2=значение Вася и ты создашь редактирование:


UPDATE <имя таблицы> SET колонка1=заменить на?? , колонка2=заменить на ?? WHERE Где в столбце под названием Name, имеется строках имя вася name="Вася";
Так думаю понятно?
Вроде Tad все и так разжевал.
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)