Перевод базы caché из 8 бит в unicode
TRANSCRIPT
![Page 1: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/1.jpg)
Перевод базы из 8-бит в Unicode Александр Коблов
![Page 2: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/2.jpg)
В чём разница
![Page 3: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/3.jpg)
Нужно перенести данные и код
• Код: – $system.OBJ.Export()
• Данные – Нужно переконвертировать:
• Строки – Не нужно переконвертировать (всё остальное):
• Числа • $bitstring
– Проблема: строки внутри списков
![Page 4: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/4.jpg)
Те данные, что заведомо не нужно конвертировать
;8 bit USER>write ##class(%Collate).DisplayToLogical("Cache Standard") 5 USER>write ##class(%GlobalEdit).Create(,"Demo",5) 1 USER>merge ^Demo=^a USER>write ##class(%Global).Export(,"Demo","c:\temp\export.gof") ;Unicode USER>do $system.OBJ.Load("c:\temp\export.gof") USER>merge ^GlobalInCorrectColaltion = ^Demo
![Page 5: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/5.jpg)
Что такое collation?
Cache standard ^c("W")=87 ^c("Y")=89 ^c("w")=119 ^c("y")=121 ^c("Ё")=1025 ^c("Б")=1041 ^c("Ж")=1046 ^c("б")=1073 ^c("ж")=1078 ^c("ё")=1105
Cyrillic1 ^c("w")=119 ^c("W")=87 ^c("y")=121 ^c("Y")=89 ^c("б")=1073 ^c("Б")=1041 ^c("ё")=1105 ^c("Ё")=1025 ^c("ж")=1078 ^c("Ж")=1046
Cyrillic3 ^c("W")=87 ^c("Y")=89 ^c("w")=119 ^c("y")=121 ^c("Б")=1041 ^c("Ё")=1025 ^c("Ж")=1046 ^c("б")=1073 ^c("ё")=1105 ^c("ж")=1078
Cyrillic4 ^c("W")=87 ^c("Y")=89 ^c("w")=119 ^c("y")=121 ^c("Б")=1041 ^c("Ё")=1025 ^c("Ж")=1046 ^c("б")=1073 ^c("ё")=1105 ^c("ж")=1078
![Page 6: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/6.jpg)
Collation по умолчанию:
Администрирование > Конфигурация > Настройки поддержки нац. языков > Определение локали
![Page 7: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/7.jpg)
Пример
USER>zwrite ^c // collation – Caché Standard ^c("Ё")=100 ^c("Г")=100 ^c("Ф")=100 USER>merge c=^c USER>zwrite c c("Г")=100 c("Ё")=100 c("Ф")=100
![Page 8: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/8.jpg)
Те данные, что нужно конвертировать
USER>zwrite ^a ^a(1)="русская строка" ^a(2)="english string" ^a(3)=$lb("русская строка",1,1.3,$lb("другая строка"),$double(10))
Нужно как-то сериализовать. Например zwrite
![Page 9: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/9.jpg)
Выгрузка с zwrite
set filename = “c:\temp\export.gbl” set globname = “^SomeGlobal” open filename:("NW":/GZIP=10)
use filename zwrite @globname close filename
![Page 10: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/10.jpg)
Загрузка с zwrite
do DISABLE^%SYS.NOJRN do $system.Process.SetZEOF(1) set filename = “c:\temp\export.gbl”
open filename:(:/GZIP=10) for { use filename read x quit:$ZEOF=-1 xecute "s "_x } close filename
do ENABLE^%SYS.NOJRN
![Page 11: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/11.jpg)
Другие варианты
• Если данные в таблицах – SQL Gateway
![Page 12: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/12.jpg)
And now For something completely different
![Page 13: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/13.jpg)
* — третий аргумент в $Piece, $Extract, $List
;вместо $Piece("a,b,c,d",",",$Length("a,b,c,d",",")) USER>write $Piece("a,b,c,d", ",", *) d USER>write $Piece("a,b,c,d", ",", *-2) b USER>write $Piece("a,b,c,d", "," ,*-2,*) b,c,d USER>set list = $LB("a", "b" ,"c") USER>set $LI(list,*+1) = "d" USER>zwrite list list=$lb("a","b","c","d")
![Page 14: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/14.jpg)
$Data(var, target)
● Вместо: o if $Data(^someval)#10=1 {
set val = ^someval // do some work with val
} o if $Data(^someval,val)#10=1 {
// do some work with val }
![Page 15: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/15.jpg)
$Order(var, dir, target)
● Вместо: o set id = “”
for { set id = $Order(^VendorData(id),1) quit:id=”” set val = ^VendorData(id)
} o set id = “”
for { set id = $Order(^VendorData(id),1, val) quit:id=””
}
![Page 16: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/16.jpg)
Xecute с параметрами
USER>set cmd = "(in,out) set a = in * in, out = a + a“, a = 3 USER>xecute (cmd, a, .b) USER>write a=9 b=18 USER>set cmd = "(in,out) {set a = in * in, out = a + a}“, a = 3 USER>xecute (cmd, a, .b) USER>write a=3 b=18
![Page 17: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/17.jpg)
$ListBuild как l-value
USER>set list = $ListBuild("a","b","c","d","e") USER>set $LB(c1,,c3) = list USER>write c1="a" c3="c" USER>set a=2,b=3 USER>set $LB(a,b) = $LB(b,a) USER>write a," ",b 3 2
![Page 18: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/18.jpg)
insert or update
create table testsql(c1 int primary key, c2 varchar(10)) insert or update into testsql values(10,'ten') insert or update into testsql values(10,'ten') insert or update into testsql values(20,'twenty')
c1 c2 10 ten 20 twenty
![Page 19: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/19.jpg)
%vid как аналог limit
select *,%VID AS SubQueryID from (select top 10 Name,Age from Sample.Person where Age > 75 order by Name) where %VID > 4
Name Age SubQueryID Cooke,Charlotte B. 82 5 Donaldson,Patricia A. 89 6
Gibbs,Brenda R. 83 7 Gore,Violet V. 87 8 Iacobelli,Emma U. 90 9 Isaksen,Marvin B. 76 10
![Page 20: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/20.jpg)
args(1/3)
USER>do ##class(testargs).m1("a","b","c","d") method m1 args=4 args(1)="a" args(2)="b" args(3)="c" args(4)="d"
![Page 21: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/21.jpg)
args(2/3)
>do ##class(testargs).m2("a","b") method m2 args=2 args(1)="a" args(2)="b" method m1 args=4 args(1)="x" args(2)="z" args(3)="a" args(4)="b"
![Page 22: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/22.jpg)
args(3/3)
USER>set args=4, args(1)=100, args(2)=200, args(4)=400 USER>do ##class(testargs).m3(args...) a = 100 b = 200 c = no val d = 400
![Page 23: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/23.jpg)
Спасибо!
![Page 24: Перевод базы Caché из 8 бит в Unicode](https://reader031.vdocuments.pub/reader031/viewer/2022020208/55b14033bb61eb4b6f8b47b4/html5/thumbnails/24.jpg)
Color Palette
This is the standard palette for the template which is used as the default for charts and graphics.