2014-01-13 3 views
6

Есть ли способ создать сценарий SQL, который преобразует список Oracle RAW(16) в GUID?Преобразование Raw (16) в GUID

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

+0

вы имеете в виду RAWTOHEX? – tbone

ответ

4

A RAW(16) в основном : GUID: это шестнадцатеричное шестнадцатеричное значение. Поэтому один из вариантов - просто оставить его в покое. Oracle будет неявно между характером и шестнадцатеричной, так что если вы ищете строку, чье исходное значение является FE2BF132638011E3A647F0DEF1FEB9E8, вы можете использовать строку в запросе:

SELECT * 
FROM myTable 
WHERE myRaw16Column = 'FE2BF132638011E3A647F0DEF1FEB9E8'; 

Если вы хотите изменить RAW(16) к CHAR(32) для вы можете использовать RAWTOHEX, как предлагает @tbone.

INSERT INTO NewTable (myGUIDColumn, ...) 
    SELECT RAWTOHEX(myRawColumn), ... 
    FROM OldTable 

Если вы хотите, чтобы сделать ее CHAR(36) тире в формате GUID, все становится сложно быстро:

INSERT INTO NewTable (myGUIDColumn, ...) 
    SELECT REGEXP_REPLACE(myRaw16Column, '(.{8})(.{4})(.{4})(.{4})(.*)', '\1-\2-\3-\4-\5'), ... 
    FROM OldTable 
+0

Является ли myGUIDColumn a Char (32) типом данных? Я также нуждаюсь в нем в GUID, отформатированном в тире. – UNIBALL

+0

Пример 'RAWTOHEX' показывает, как изменить« RAW (16) »на неформатированный GUID, который является« CHAR (32) ». Пример «REGEXP_REPLACE» показывает, как изменить «RAW (16)» на идентификатор GUID с тире, который является «CHAR (36)». Лично я бы сохранил его как «RAW (16)», что и возвращает функция Oracle 'SYS_GUID()' и форматирует ее для отображения по мере необходимости. Но это только мои предпочтения. Как показывает первый пример в моем ответе, вы можете запросить значение GUID в столбце «RAW (16)» без необходимости прибегать к каким-либо специальным трюкам. –

+0

Спасибо Ed. У меня около 14 миллионов файлов, которые мне нужно удалить из UNIX, и в настоящее время единственным способом, которым я могу их идентифицировать, является имя файла. Имя файла выглядит следующим образом. FN {FFEF5B84-D2ED-45E3-9BD6-5C368357428A} {6A6CF41E-BE0F-4892-9808-34EDDD802300} -0.pdf Этот первый идентификатор GUID является Object_ID и второй идентификатор GUID является идентификатором объекта хранения. Тем не менее, база данных отображает их в формате RAW (16). В настоящее время у меня есть полный список файлов, которые нужно удалить, но Object_ID находится в формате RAW (16). Если я могу преобразовать Object_ID в GUID, я могу создать список файлов. – UNIBALL

Смежные вопросы