Страница 1 из 1

Идентификатор UUID в Мапбейсике

Добавлено: 23 янв 2018, 14:19
ginpetr
Здравствуйте!
Посредством Мапбейсика нужно записать создаваемому объекту в атрибут идентификатор UUID. Как я понял нужно вызывать функцию UuidCreate из Windows. Ввиду ограниченности познаний в программировании, не могу сообразить, как её туда приделать.

Re: Идентификатор UUID в Мапбейсике

Добавлено: 23 янв 2018, 14:40
trir
можно и самому генерить
в случае Windows это будет GUID

Re: Идентификатор UUID в Мапбейсике

Добавлено: 23 янв 2018, 23:06
Boris
Когда нет желания лазить во всякие внутрисистемные вызовы и пр. с UUID поступают самым естественным образом - генерят миллион(-ы) записей и берут из созданного массива столько, сколько нужно, помечая выбывшие, что бы не взять их повторно.

Re: Идентификатор UUID в Мапбейсике

Добавлено: 14 июн 2021, 21:47
Boris
Аналогичную задачу, после всякого перебора вариантов с MapBasic и иным программированием, получилось решить самым простым способом - через OGR:

Код: Выделить всё

ogrinfo -so myTab.TAB -dialect SQLite -sql "UPDATE myTab SET GLOBALID=CreateUUID()"
:wink:

Re: Идентификатор UUID в Мапбейсике

Добавлено: 12 ноя 2021, 11:26
Vadim
Boris, не подскажете, как нужно изменить приведённый Вами код, чтобы идентификатор UUID прописывался с фигурными скобками, а не без них? Пробовал добавлять uuid([format='WithBraces']) в разных вариациях, но, видимо, что-то не так с синтаксисом.

Re: Идентификатор UUID в Мапбейсике

Добавлено: 23 ноя 2021, 20:48
Boris
Согласно SpatiaLite 5.0.1 SQL functions reference list раздел Generic SQL utility functions
Функция
CreateUUID CreateUUID( void ) : Text returns a Version 4 (random) UUID (Universally unique identifier).
параметров не имеет, так что для получения скобок необходимо использовать стандартный оператор конкатенации:

Код: Выделить всё

ogrinfo -so myTab.csv -dialect SQLite -sql "UPDATE myTab SET GLOBALID='{' || CreateUUID() || '}'"
ID1,GLOBALID
"1",{7ad0bde8-d2a6-4c67-89f9-72f56443daa2}
"2",{1450f9db-df9a-415d-817c-92b6c6f7b547}

Re: Идентификатор UUID в Мапбейсике

Добавлено: 24 ноя 2021, 12:54
Vadim
Boris, спасибо - работает!