ci-server-engineer/.claude/skills/system-management/tasks/export-dataset.md
cliu 516729ff24 R1.05 findings from a user project (tested only)
Tested on the R1.05 test server 2026-10-09..12 with a user project (own
objects only); not yet on CI-Eng-Sample (ISS-188). Only results that
were tested are included; inferences, code-only and manual-only points
and the untested sample layout change were left out.
- layouts: 'logout' is a secondary logout, always disabled on the R1.05
  web client; 'exit' closes the window and ends the session (ISS-182).
- create-display: R1.05 web client table (String items in text vs
  textField, fixed text alignment, start-hidden limits ISS-183, two
  visibility conditions, On entry display actions, rectangle blinking,
  verified connections, first load).
- java-class 4a: signal arrays at scale, write on change, attribute
  arrays, offline javac/javap check; change-reset-class: new signals need
  the object recreated, attributes lost (ISS-185); opcdbg reset in cmd,
  TRIGGER_1 via dssqld -m.
- string-items (ISS-187), users-groups, modbus-station (400 registers,
  comm loss), export-dataset (NAME range filter), item-alarming.
- new task system-management/package-project.md; tools/ModbusSim.java
  (tested on R1.05: FC03/04/06/16, exceptions, modes); AMSI (ISS-186).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 21:57:08 +11:00

101 lines
4.9 KiB
Markdown

---
task: Export dataset contents with dssqld
version: R1.05 (first written for R1.03)
source: IM 36K10J10-01EN §2.9.2, §5.6; IM 36K10L50-01EN §3 (5th ed., Feb. 2026); practiced on the test system 2026-09-30 (R1.03)
status: verified on R1.03 (2026-09-30); re-tested on R1.05 2026-10-08 (read-only, R1.05 test server) - whole and filtered exports, `-f`, `dssqld -h` text (identical to R1.03), long output path, `dss_*.tmp` leftovers
---
# Export dataset contents (dssqld)
Read-only. Needs CI Server running. Works from a normal or elevated prompt.
## Export a whole dataset
```
dssqld -e <output>.qli -d <DATASET> -c -l <listing>.lst
```
- `-d` dataset name (e.g. `ITEM_DF`, `STATUS_DF`, `LOCAL_NODE_DF`, `CLASS_DF`, `OBJECT_DF`).
- `-c` comma-separated output: first line is the field names, then one quoted row per record.
- `-l` writes the result summary to a listing file.
- Output path **≤ 79 characters**: a longer `-e` path gives no error, but the file does not
appear under that name (verified, ISS-020). On R1.05 the file was written under a shortened
name: the path cut after 79 characters, then `.qli` (verified 2026-10-08).
- `-a` also exports hidden fields.
The console (and listing) end with a summary; check `Errors` is 0:
```
Data set Recognized Exported Not found Errors
ITEM_DF 184 184 0 0
```
## Find datasets and fields
```
dssqld -f -l dict.lst
```
Dumps the data dictionary: every dataset with its description and fields (name, type, length,
description). Search it to find which dataset holds what, e.g. the version fields are in
`LOCAL_NODE_DF`, `HOST_NODE_DF` and `ENTERPRISE_SERVER_DF`.
## Useful datasets (R1.03, still present on R1.05)
| Dataset | Contents |
|---|---|
| `LOCAL_NODE_DF` | This node: name, number, version (`VERSION_MAJOR/MINOR/PACK`), licence state |
| `ITEM_DF` | Item definitions: full name, section path, description, limits, format, type, station, I/O address |
| `STATUS_DF` | Item status definitions: name, number, alarm state, priority, colour, mnemonic (e.g. 9 = NORMAL) |
On R1.05 `LOCAL_NODE_DF` shows `VERSION_MAJOR` 1, `VERSION_MINOR` 5. New datasets since R1.03
(installed `tls\src`, verified 2026-10-08): `API_KEYS_DF` (REST API keys per user),
`UASERVER_MAPPER_DF` (OPC UA Information Model Mapper), `IEC61850_RCB_DF` (IEC 61850 report
control blocks), `OPCUAC_METHOD_CALL2_DF` (replaces `OPCUAC_METHOD_CALL_IN_DF` and
`…_CALL_OUT_DF`), `ALARM_ATTRIBUTE_TEMP_DF` (alarm attributes, not documented). `ITEM_VAL` has
three new fields: `ENG_UNIT`, `SCALE_HIGH_LIMIT`, `SCALE_LOW_LIMIT`.
## Filtered exports
Export only matching records with a filter file (IM 36K10L50 §3.6, verified 2026-09-30):
```
@SELECT
'GROUP_NAME = "CIENG_EVENT"'
@HIS_GROUP_DF
```
```
dssqld -e <output>.qli <filter>.qli [-c] -l <listing>.lst
```
- `@SELECT`, then the filter in **single quotes** with strings in double quotes, then
`@<DATASET>`. The filter applies only to the next dataset. Operators: `=`, `!=`, `<`, `>`,
`and`.
- Some datasets (e.g. `ITEM_HISTORY`, `ITEM_VAL`, `ALARM_CHRONO`) are not exported unless
named explicitly (`NO-EXPORT` list in `dssqld.sup`).
- `ITEM_HISTORY` returns nothing unless the filter names `ITEM_NAME` and a `SAMPLE_TIME` range
(see `load-history.md`).
- `%TLS_DAT_PATH%\dss_export.qli` is Yokogawa's own filter file for exporting all engineering
definitions (`dssqld -e out.qli dss_export.qli`); it also shows `@MACRO` usage. It is the
same file on R1.05 as on R1.03 and does **not** cover the IEC 61850, MQTT, OPC UA client
method/tag datasets, `UASERVER_MAPPER_DF` or `API_KEYS_DF`: export those with `-d` as well
when you back up or migrate a system (ISS-118).
- R1.05 `dssqld.sup` adds `API_KEYS_DF` to the `NO-EXPORT` list, so a full export leaves the
REST API keys out on purpose. `-d API_KEYS_DF` still exports it; treat that file as a secret,
or create new keys on the target system instead (skill `data-access`).
- **Range on `NAME`** (R1.05, 2026-10-12): `'NAME > "<Section>." and NAME < "<Next>"'` (`<Next>` = the section
name with its last character raised by one, e.g. `TANK1.` → `TANK2`) selects all items below a
section on `ITEM_DF` (tested with 1,751 items); a `NAME = "A*"` wildcard does not work.
The same works on `ALARM_CURRENT` with `ITEM_NAME`, to list the current alarms of one section.
## Clean up: `dss_*.tmp` files (R1.05)
Exporting `OBJECT_DF` leaves 0-byte `dss_<n>_<id>.tmp` files in `%TLS_LST_PATH%` (`tls\lst`),
about one per object (28 files for 29 objects on the R1.05 test server, 2026-10-08); a second
export of the same objects added none. Exports of `LOCAL_NODE_DF`, `STATUS_DF`, `ITEM_DF`,
`CLASS_DF`, `REPORT_DF`, a filtered export and `-f` left none. CI Server does not remove them
(ISS-091, ISS-119). After a test session, delete the 0-byte ones written since the session
started, e.g. with `examples/CI-Eng-Sample/shared/clean_dss_tmp.ps1 -Since <start time>`.
Not checked on R1.03.