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

MapInfo, MapBasic
Ответить
Аватара пользователя
ginpetr
Завсегдатай
Сообщения: 320
Зарегистрирован: 21 июн 2011, 12:07
Репутация: 126
Откуда: Орск
Контактная информация:

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

Сообщение ginpetr » 23 янв 2018, 14:19

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

trir
Гуру
Сообщения: 4987
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 944
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

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

Сообщение trir » 23 янв 2018, 14:40

можно и самому генерить
в случае Windows это будет GUID

Boris
Гуру
Сообщения: 4197
Зарегистрирован: 10 апр 2006, 22:34
Статьи: 3
Проекты: 1
Репутация: 429
Откуда: Париж

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

Сообщение Boris » 23 янв 2018, 23:06

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

Boris
Гуру
Сообщения: 4197
Зарегистрирован: 10 апр 2006, 22:34
Статьи: 3
Проекты: 1
Репутация: 429
Откуда: Париж

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

Сообщение Boris » 14 июн 2021, 21:47

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

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

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

Vadim
Завсегдатай
Сообщения: 276
Зарегистрирован: 03 июн 2015, 10:19
Репутация: 70

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

Сообщение Vadim » 12 ноя 2021, 11:26

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

Boris
Гуру
Сообщения: 4197
Зарегистрирован: 10 апр 2006, 22:34
Статьи: 3
Проекты: 1
Репутация: 429
Откуда: Париж

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

Сообщение Boris » 23 ноя 2021, 20:48

Согласно 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}

Vadim
Завсегдатай
Сообщения: 276
Зарегистрирован: 03 июн 2015, 10:19
Репутация: 70

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

Сообщение Vadim » 24 ноя 2021, 12:54

Boris, спасибо - работает!

Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 29 гостей