Переключение на Главную Страницу Страницы: 1 ... 67 68 [69]  ОтправитьПечать
Очень популярная тема (более 25 ответов) 1sqlite (число прочтений - 379340 )
nicesc
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 45
Зарегистрирован: 13. Июня 2009
Пол: Мужской
Re: 1sqlite
Ответ #1020 - 07. Октября 2019 :: 13:09
Печать  
Вот так видимо:

https://www.sqlite.org/json1.html
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 564
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #1021 - 07. Октября 2019 :: 15:09
Печать  
Да кто-то просил, ну я и включил, а выключить как то подзабыл.
И я не уверен что json поддерживает русский язык.

Все эти модули расширения можно (и наверное нужно) и по отдельности собирать.
Причем собирать можно чем угодно - хоть шлангом, хоть gcc.
  
Наверх
 
IP записан
 
Arbuz
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 39
Зарегистрирован: 06. Февраля 2019
Re: 1sqlite
Ответ #1022 - 10. Октября 2019 :: 11:50
Печать  
Ух ты ж!
Сборка с 30 sqlite'ом местами в два раза быстрее чем с 28  Ужас Очень довольный

например Arbuz писал(а) 09. Октября 2019 :: 15:04:
Тот самый запрос по остаткам


или такой
Код (SQL)
Выбрать все
	|SELECT
	|	Дубли.PARENTEXT [Номенклатура :Справочник.Номенклатура],
	|	Дубли.ID [Единица :Справочник.Единицы],
	|	Дубли.ШтрихКод,
	|	СпрНом.CODE Код
	|FROM Справочник_Единицы AS Дубли
	|LEFT JOIN [Справочник_Номенклатура] СпрНом ON Дубли.PARENTEXT = СпрНом.ID
	|WHERE EXISTS (
	|	SELECT
	|		1
	|	FROM (
	|		SELECT
	|			Ед.ШтрихКод ШтрихКод
	|		FROM Справочник_Единицы AS Ед
	|		WHERE Ед.ШтрихКод > ''
	|		GROUP BY Ед.ШтрихКод HAVING COUNT(*) > 1
	|	) AS Штрихи
	|	WHERE  Дубли.ШтрихКод = Штрихи.ШтрихКод
	|)
	|ORDER BY +ШтрихКод
 

  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 564
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #1023 - 10. Октября 2019 :: 13:31
Печать  
Arbuz писал(а) 10. Октября 2019 :: 11:50:
Ух ты ж!
Сборка с 30 sqlite'ом местами в два раза быстрее чем с 28  Ужас Очень довольный

План запроса совершенно одинаковый.
Затрудняюсь определить с чем это связано.
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 805
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: 1sqlite
Ответ #1024 - 07. Февраля 2020 :: 17:12
Печать  
Djelf, подскажи пожалуйста, а как сохранить в db3 таблицу, созданную как CREATE VIRTUAL TABLE? В частности так загружаю csv файл через плагин.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 564
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #1025 - 08. Февраля 2020 :: 05:38
Печать  
alyuev писал(а) 07. Февраля 2020 :: 17:12:
Djelf, подскажи пожалуйста, а как сохранить в db3 таблицу, созданную как CREATE VIRTUAL TABLE? В частности так загружаю csv файл через плагин.


Виртуальная таблица почти ничем не отличается от обычной, поэтому никаких хитростей тут нет: https://www.w3schools.com/sql/sql_insert_into_select.asp

Кстати в примере к csv есть чтение через временную таблицу sqlite.
« Последняя редакция: 08. Февраля 2020 :: 07:41 - Djelf »  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 805
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: 1sqlite
Ответ #1026 - 10. Февраля 2020 :: 08:52
Печать  
О... "Тыщу" лет лежит у меня твой пример по работе с CSV, а заглянуть в него не удосужился... Зато еще раз его нашел на Инфостарте и хоть плюсиком тебя отблагодарил Улыбка.
Да, там как раз то, что нужно. Только я думал будет какой-то метод, без использования промежуточного сохранения структуры таблицы из CSV. А так приходится использовать PRAGMA table_info и потом CREATE TABLE, в которую и будет идти вставка через INSERT INTO SELECT....

Еще раз большое спасибо!
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 805
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: 1sqlite
Ответ #1027 - 10. Февраля 2020 :: 13:22
Печать  
Интересная ситуация выявилась.

Есть CSV, у которого есть название колонки с пробелом, символом $ и скобками: "RATES (US$)"

Когда файл загружаю - таблица создается корректно. При парсинге table_info - пришлось доработать обработку перечня колонок, добавив замену пробела на "_" и обертывая имена в кавычки, тогда остальные символы проходят при создании новой таблицы.  Но вот при запросе "SELECT * FROM ..." - выдает ошибку на $:

Код
Выбрать все
Ошибка выполнения: Неправильная типизация в колонке: RATES (US$) 



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

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 564
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #1028 - 10. Февраля 2020 :: 14:46
Печать  
alyuev писал(а) 10. Февраля 2020 :: 13:22:
Я так понимаю - этого уже не обойти? Придется всё таки лезть в файл CSV, проверять первую строку на наличие таких символов и исправлять?


У самого sqlite ограничений то нет, это типизация 1sqlite мешает.
Ну и в моем примере еще и табличное поле с названием полей с пробелами не работает.
Но это довольно легко решается.

Первый вариант:
В примере есть чтение заголовков через PRAGMA table_info.
Также там есть пример чтения файла без первой строки.
Можно прочитать колонки, файл без первой строки, а потом переименовать колонки.

Второй вариант:
В статье на  https://infostart.ru/public/805029/ есть описание типизации колонок.
Можно прочитать заголовки, модифицировать имена и типизировать колонки, отключить файл, подключить заново но уже с типизацией и нормальными именами.
« Последняя редакция: 10. Февраля 2020 :: 17:09 - Djelf »  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 564
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #1029 - 20. Мая 2020 :: 15:40
Печать  
Внезапно получилось...

https://cloud.mail.ru/public/4th1/qavXTDgwv

StrMatch.dll

Это гибридная компонета, работающая как ВК без регистрации в реестре
и одновременно расширение к sqlite3, работающее без 1С

Автор первоначальной версии: Sk0rp
https://infostart.ru/public/237186/

Исходники взяты отсюда:
https://github.com/5k0rp/StrMatch

Использовались куски кода и движок из 1sqlite:
https://snegopat.ru/1sqlite/index

Изменения компоненты:
1. Движок ВК переведен на движок от Орефкова.
   Это позволило ВК загружаться в 1С без регистрации в реестре
   Методы и свойства совместны с оригинальной компонетой
2. Добавлен интерфейс загрузки в sqlite3

Использование:

База = СоздатьОбъект("SQLiteBase");
База.Открыть(":memory:");// без этого будет вылет
База.РазрешитьЗагрузкуРасширений(1);
Запрос=База.НовыйЗапрос();
Запрос.ВыполнитьЗапрос("SELECT load_extension('strmatch.dll') as ret); 
// без полного пути из каталога базы не загрузится, только из BIN
// если указан полный путь, "as имя колонки" обязательно
Запрос.ВыполнитьЗапрос("
  SELECT
  descr,
  strmatch(descr,'что-то тут ищем') as Рейтинг
from Справочник_Номенклатура
order by strmatch(descr,'что-то тут ищем') desc;

Примечание:
Перебор через 1С с использованием кэша ~2-3c на 5к строк
Запрос через 1sqlite ~150мс

P.S.
Кэш (который должен ускорять ВК в 1С) никак не задействован.
Но результат уже очень не плох, так что разгон пока не планируется.
« Последняя редакция: 21. Мая 2020 :: 07:19 - Djelf »  
Наверх
 
IP записан
 
shuUshu
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 2
Зарегистрирован: 13. Января 2022
Re: 1sqlite
Ответ #1030 - 13. Января 2022 :: 18:46
Печать  
Доброго времени суток!
Подскажите пожалуйста. Делаю выборку по справочнику (примерно 600к записей). Если кто-то сидит в какой-то карточке то результат получается но он не полный (не хватает примерно 100к записей). Так и должно быть или я что-то не так делаю?
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 564
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #1031 - 14. Января 2022 :: 06:55
Печать  
Такого быть не должно.
Какая версия 1sqlite? Все собранные мной версии тут: https://cloud.mail.ru/home/1sqlite/
Возможно что-то не так со справочником и/или с его индексом.
Какой размер таблицы справочника? Запрос 1С так же себя ведет? А простая выборка из справочника?
  
Наверх
 
IP записан
 
shuUshu
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 2
Зарегистрирован: 13. Января 2022
Re: 1sqlite
Ответ #1032 - 14. Января 2022 :: 11:22
Печать  
Огромное спасибо за наводку. Похоже что битая таблица справочника. Попробовал создать новую конфигурацию с одним справочником, накидал элементов - ошибка не проявляется.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 67 68 [69] 
ОтправитьПечать