|
|
Интерфейс командной строки CDBFliteПервым символом параметра может быть '/' или '-'.
В качестве разделителя внутри параметров используется запятая или
точка с запятой.
Замечание к OS Unix, Linux:
В OS Unix символ ';' обозначает конец команды и начало
следующей, поэтому в следующих случаях:
/select:name,street,house,flat - правильно
/select:name;street;house;flat - не правильно!
"/select:name;street;house;flat" - правильно
Если команды берутся из файла, то там допустимы оба символа.
Замечание к OS/2 DLL:
Формат вызова -
/* */
RxFuncAdd("CDBFlite","cdbflite","CDBFlite")
call CDBFlite 'c:\path\cdbflite.ini',
полное имя к .ini файлу или пусто, если не используется: ''
Допустимы следующие параметры:
/version
Служебный параметр, возвращает номер версии и дату
компиляции CDBFlite.
/delete:N1,N2-N3,all
Пометить на удаление.
После команды с двоеточием указываются номера записей
подлежащие удалению. Их можно перечислять через запятую,
указывать диапазон через черточку, либо указать параметр
"all" - в этом случае будут помечены на удаление все записи.
Можно комбинировать и использовать любое количество номеров
записей для удаления.
/delete:10,20 - удалить записи #10 и #20
/delete:10-20 - удалить записи с #10 по #20
/delete:all - удалить все
/delete:10,20,30-35,40
/recall:N1,N2-N3,all
Снять пометку на удаление.
После команды с двоеточием указываются номера записей
подлежащие восстановлению. Их можно перечислять через
запятую, указывать диапазон через черточку, либо указать
параметр "all" - в этом случае будет снята пометка на
удаление со всех записей. Можно комбинировать и использовать
любое количество номеров записей.
/recall:10,20 - снять пометку с записи #10 и #20
/recall:10-20 - снять пометку с записей с #10 по #20
/recall:all - восстановить все
/recall:10,20,30-35,40
/pack[:dbf|memo]
Упаковать базу данных.
Физически удалить помеченные на удаление записи, после чего
восстановить их будет уже нельзя. Если указать уточняющий
параметр :dbf или :memo, то будет упакован только .dbf файл
или только файл примечаний. Если уточняющий параметр не
указывать, то будет упаковано и то и другое.
Может комбинироваться, например, с параметром /delete:
/delete:15-100 /pack
/pack:dbf
/zap
Удалить физически все записи в базе данных.
/zap
/blank
Очистить буфер записи. Обычно применяется перед операциями
добавления записей. При старте программы буфер записи
очищается автоматически.
/blank
/append:N|blank
Добавить запись с текущей информацией в буфере.
Если указать необязательное число - будет добавлено указаное
число записей. Если указать слово blank, то будет добавлена
одна пустая запись.
/append
/append:blank
/append:100
/trunc:N
Обрезать базу данных по указаный номер записи.
Обрезанные записи восстановлению не подлежат.
/trunc:100
/make:filename.dbf
Создать пустую базу данных с такой же структурой.
/make:new.dbf
/sort:field1;field2;...
Отсортировать имеющуюся базу данных по указаным полям.
Старая копия сохраняется в файле с расширением .bak. В
процессе сортировки создается файл с расширением .tmp, то
есть для успешного выполнения на диске должно быть
необходимое свободное место.
/sort:name
/sort:phone
/sort:street;house;flat
перед выполнением команды sort автоматически вызывается
/clear (см.ниже).
/cdx
Очищает (устанавливает в 0) байт по смещению 1с в заголовке,
обозначающий наличие .CDX или .MDX файла.
/cdx
/cpzero[:N]
Устанавливает в заданое значение байт по смещению 1d в
заголовке, обозначающий используемую кодовую страницу, если
значение не указывать, используется 0.
/cpzero
/cpzero:3
/check
Проверяет корректность заголовка и при необходимости его
исправляет.
*.dbf /check
/struct:file.txt|file.sql|file.dbf|file.prg|file.fox
Вывести информацию о структуре.
Если не задавать имя файла, то информация выдается на stdout.
/struct
Если указать имя файла с расширением .txt, информация будет
добавлена к указанному файлу в таком же виде, как и в
предыдущем параметре.
/struct:somefile.txt
Если указать имя файла с расширением .sql, информация будет
добавлена к указанному файлу в формате команды CREATE TABLE
языка SQL.
/struct:somefile.sql
Если указать имя файла с расширением .dbf, информация будет
записана в указанный файл в формате принятом в FoxPro или
Clipper. Существующий файл перезаписывается.
/struct:somefile.dbf
Если указать имя файла с расширением .prg, информация будет
добавлена к указанному файлу в формате команды CREATEDB
языка Clipper.
/struct:somefile.prg
Если указать имя файла с расширением .fox, информация будет
добавлена к указанному файлу в формате команды CREATE TABLE
языка FoxPro.
/struct:somefile.fox
/select:field1;field2;...|*
/s:field1;field2;...|*
Вывести на stdout указанные поля базы данных.
/select:name
/select:name;phone
/select:name;street;house;flat
/select:*
/del[+|-]
/del или /del+ = выводить признак удаления при выводе
записей на экран.
/del- = не выводить признак удаления. По умолчанию.
Применяется совместно с /select.
/del /select:*
/order:field1;field2;...
/o:field1;field2;...
Установить порядок записей (отсортировать имеющуюся базу
данных в памяти по указаным полям) для произведения
каких-либо действий. Само по себе смысла не имеет.
Использовать следует в комбинации с другими командами:
/order:name /select:name;phone;street;house;flat
если вам необходимо устанавить фильтр, то это следует
сделать до команды /order - команда /filter отменяет ее
действие.
/clear
Очистить ранее установленные order,sort,select,filter. Может
понадобится если необходимо в одном запуске сделать
несколько запросов.
/order:name /select:name;phone /clear /order:phone /select:phone;name
/asc
Установить порядок сортировки по возрастанию. По умолчанию.
/asc
/desc
Установить порядок сортировки по убыванию.
/desc
/filter:condition
/f:condition
Установка фильтра. Фильтр служит для отбора записей
удовлетворяющих некоторому условию. Допустимо использовать
несколько условий в одном фильтре и/или несколько фильтров.
В последнем случае они объединяются по условию 'И'.
Например:
/filter:name=Иванов - выбрать всех Ивановых
/filter:name=Иванов&age}30 - выбрать всех Ивановых c возрастом
более 30 лет
/filter:name=Иванов&age{30 - выбрать всех Ивановых c возрастом
менее 30 лет
/filter:name=Иванов;name=Петров - выбрать всех Ивановых или Петровых
/filter:name=Иванов|name=Петров - выбрать всех Ивановых или Петровых
/filter:name~Иван - выбрать всех содержащих подстроку
"Иван". Таким образом будут выбраны
Иван, Иванов, Иванович и т.д. причем
не обязательно с начала строки.
Здесь требуется пояснить, что в командной строке вы не
можете употреблять символы '|', '>', '<' - эти символы
использует сама OS для перенаправления ввода-вывода. По этой
причине в командной строке следует заменять указанные
символы следующим образом:
'|' --> ';'
'>' --> '}'
'<' --> '{'
Если команды передаются программе из файла, то там можно
использовать любые символы.
Допустимы следующие логические операции:
= - равно
<> или >< - не равно
> или >> - больше
>= - больше или равно
< или << - меньше
<= - меньше или равно
~ - вхождение подстроки (для строковых полей)
Если вы задаете несколько фильтров подряд они объединяются:
/filter:name=A /filter:age=30
все равно что
/filter:name=A&age=30
Надо заметить, что во втором случае работать будет быстрее,
так как сравнение идет за 1 проход, а в первом случае 2.
Если сравниваемое выражение содержит пробелы, его следует
заключать в двойные кавычки, если команда в файле допустимы
одиночные.
/filter:name="Иванов Петр"
Команда /filter отменяет действие команды /order.
В выражении фильтра допустимо использовать следующие функции
ABS, ACOS, ASIN, ATAN, COSH, COS, EXP, LOG10, LOG,
POW10, ROUND, SINH, SIN, SQRT, SQR, TANH, TAN, TRUNC
для числовых полей
/filter:summa-round(summa)>0.5
В выражении фильтра допустимо использовать следующие функции
TRIM, LTRIM, RTRIM, SUBSTR, LEFT, RIGHT
для символьных полей и для даты.
/filter:substr(date,3,2)=05 /select:*
Для сравнения даты следует использовать функцию DTOS.
/filter:date=dtos(05.02.2001) /select:*
/ansi
В файле кодировка ANSI (Windows).
/OEM
В файле кодировка OEM (DOS). По умолчанию.
/case[+|-]
/case или /case+ = не различать регистр букв.
/case- = различать регистр букв. По умолчанию.
Применяется совместно с /sort, /order или /filter.
/case /sort:name
/del[+|-]
/del или /del+ = выводить признак удаления при выводе
записей на экран.
/del- = не выводить признак удаления. По умолчанию.
Применяется совместно с /select.
/del /select:*
/date:dmy|mdy|ymd|asis|char
Формат даты для вывода или для фильтра.
dmy - День-Месяц-Год
mdy - Месяц-День-Год
ymd - Год-Месяц-День
asis - Так как хранится в файле
Допускается изменять порядок как угодно часто:
/date:ymd /filter:born=1971 /date:mdy /select:*
char - Описывает не формат, а символ разделитель. Допустимо
указать любой:
/date:- // 28-01-2001
/date:/ // 28/01/2001
/range:N1,N2-N3|all
Выбрать записи с конкретными номерами. Если база
отсортрована и/или отфильтрована, то записи отбираются
именно из числа удовлетворяющих фильтру и в порядке
сортировки. Параметр /range имеет самый низкий приоритет и
его следует использовать последним в комбинации с /filter
или /order. Параметр all отключает range.
/range:1-10
/range:11-20
/range:1-100,200-500,150
/range:all
/memo[:text]
Выводить состояние мемо поля /memo
или содержимое /memo:text
/field:field1=value;field2=value;...
/l:field1=value;field2=value;...
Установить значения полей в буфере данных. После этого вы
можете записать их в базу командой /append или /update.
/field:name="John Smith";age=30;phone=3-14159265358
/update
Записать текущие данные из буфера записи в базу данных.
Данные записываются во все записи, которые удовлетворяют
текущему /filter и/или /range. Если /filter не установлен,
то обновятся все записи.
/field:first=100 /update
/filter:name=John /field:first=100 /update
/count
Возвращает число записей в базе с учетом фильтра.
/count
/name[+|-]
/name или /name+ = выводить имя файла базы данных
/name- = не выводить имя файла базы данных.
По умолчанию.
Воздействует на команды /count и /select.
*.dbf /name /count
*.dbf /name /filter:customer="Smith" /select:*
/calc:condition
Просто вычисляет заданное выражение. Своеобразный
калькулятор, работающий из командной строки. Допустимы +-/*,
а также все функции, которые описаны при описании параметра
/filter.
/calc:2+2*2
/calc:cos(0)
/trim:left|right|all
Управление обрезанием начальных и концевых пробелов в
строковых полях.
/trim - без суффикса, отключает обрезание пробелов.
/trim:left - удалить пробелы слева
/trim:right - удалить пробелы справа
/trim:all - удалить пробелы слева и справа
/out:file.txt|file.htm|file.dbf|file.sql|file.prg|file.fox|file.csv
Тип (способ) вывода информации командой /select.
По умолчанию вывод производится на консоль (экран).
/out /select:*
Если указать имя файла с расширением .txt, то команда
/select запишет результат работы в указанный файл в том же
виде, как происходит вывод на экран. Если файл существует -
информация добавляется.
/out:file.txt /select:*
Если указать имя файла с расширением .csv, то команда
/select запишет результат работы в указанный файл в виде
значений, разделенных запятыми. Если файл существует -
информация добавляется.
/out:file.csv /select:*
Если указать имя файла с расширением .htm, то команда
/select поместит вывод в виде таблицы в указанный файл. Если
файл существует - информация добавляется.
/out:file.htm /select:*
Если указать имя файла с расширением .dbf, то команда
/select поместит вывод в указанный .dbf-файл. Если такого
файла нет - он будет создан. Если файл существует, то
CDBFlite добавляет информацию только в существующие поля
(имеющие то же имя, что и в файле источнике).
/out:file.dbf /select:name;address;phone
Если указать имя файла с расширением .sql, то команда
/select запишет результат в указанный файл, используя
синтаксис команды "INSERT INTO" языка SQL. Если файл
существует - информация добавляется.
/out:file.sql /select:*
/struct:dump.sql /out:dump.sql /select:*
Если указать имя файла с расширением .prg или .fox, то
команда /select запишет результат в указанный файл,
используя синтаксис команды "REPLACE" языка Clipper или
FoxPro. Если файл существует - информация добавляется.
/out:file.prg /select:*
/struct:dump.prg /out:dump.prg /select:*
+filename.dbf
Выполняется операция APPEND FROM - добавление к текущему
файлу записей из другого файла. Если поля имеют одинаковое
имя, но разный тип - CDBFlite преобразует выражение к
нужному типу.
cdbflite first.dbf +second.dbf
/hdr[+|-]
Выводить или не выводить названия полей при выполнении
команды /select.
/hdr+ /select:*
/browse
/fields
Способ вывода информации командой /select. По умолчанию /browse.
/fields /select:*
/deleted[+|-]
Учитывать или не учитывать записи помеченные на удаление.
/deleted-
/cmp:filename.dbf [/filter] [/order] /cmp[:isc]
Сравнить два .DBF файла. Сначала задается имя второго файла:
/cmp:filename.dbf
Теперь можно установить фильтр и/или порядок записей.
Установка фильтра или порядка записей командами /filter или /order
подействует на оба файла.
После этого следует выполнить команды сравнения (можно несколько сразу):
/cmp или /cmp:i - вывести общую информацию о базах
/cmp:s - сравнить структуры баз
/cmp:c - сравнить содержимое баз
/cmp:isc - выполнить все вышеперечисленное.
Условные знаки применяемые при сравнении структуры:
-- - поле отсутствует.
<> - поля с одинаковым именем, но все остальные параметры не совпадают.
~= - поля с одинаковым именем и типом, но разной размерности.
= - все параметры поля совпадают, кроме смещения от начала записи.
== - полное совпадение параметров полей.
Например:
cdbflite file1.dbf /cmp:file2.dbf /cmp
cdbflite file1.dbf /cmp:file2.dbf /cmp:s
cdbflite file1.dbf /cmp:file2.dbf /f:born}dtos(01.01.1970) /o:name /cmp:ics
/sum:field1;field2;...|*
Напечатать сумму по указанным полям.
/sum:salary
/sum:payment;discount
/sum:*
/avg:field1;field2;...|*
Напечатать среднее значение по указанным полям.
/avg:salary
/avg:payment;discount
/avg:*
/encode:password
Зашифровать базу указанным паролем. Стойкость шифрования
не очень высокая, но вполне достаточная.
/encode:super_secret
/decode:password
Расшифровать базу, используя указанный пароль. Если вы ошибетесь в
пароле, то вместо оригинала получите всякий вздор.
/decode:super_secret
/psw[:password]
Использовать указанный пароль для операций ввода-вывода.
Параметр /psw без указания пароля отключает действие текущего пароля.
/psw:12345 /field:a1=John;a2=Smith;a3=100;a4=27.05.2001 /append
/psw:12345 /select:*
/bak[+|-]
Создавать или не создавать .bak файл при измененеиях базы данных.
/bak+
/bak-
/2oem, /2ansi
кодировка на выходе.
oem2ansi, /ansi2oem
изменить кодовую страницу исходного файла.
/deldupes
удаление дублирующихся строк.
/ignorequotes
не убирать кавычки из комманд в командной строке и воспринимать их буквально.
/modify:struct.txt
изменить структуру указанного dbf файла
Файл с описанием структуры может содержать такие команды:
- По умолчанию все поля исходного файла сохраняются как есть.
- FIELDNAME TYPE(LEN)
если FIELDNAME существует, то программа изменит TYPE и LENGTH
если FIELDNAME не существует, то это поле будет добавлено в конец таблицы
- FIELDNAME/BEFORE TYPE(LEN)
если FIELDNAME не существует, то это поле будет добавлено перед полем BEFORE
- -FIELDNAME
удалить FIELDNAME из таблицы
- FIELDNAME=NEWNAME
переименовать FIELDNAME в NEWNAME
Кроме того вы можете указать некоторые команды после описания поля
- INC:startvalue
Например
ID N(10) INC:1
Поле ID будет заполнено 1, 2, 3, ....
- EXP:expression
Например
FULLNAME C(30) EXP:TRIM(FIRST) TRIM(LAST)
Поле FULLNAME будет заполнено содержимым FIRST и LAST
XXX N(15.2) EXP:ID*2
Поле XXX будет содержать ID*2
Полный файл может выглядеть так:
-PRC_MNC
PRC_PID=PARCELID
-PRC_ASSNG_
-PRC_ASS001
FULLNAME C(80) EXP:TRIM(FIRST) TRIM(LAST)
PRC_BLOCK/BLOCK
PRC_LOT=LOT
ID N(10) INC:1
/create:struct.txt newfile.dbf
создать новый файл используя указанную структуру
Все команды работают аналогично /modify, кроме '='
|
|