Команда COPY TO

Создает новый файл на основе содержимого выбранной в данный момент таблицы.

Синтаксис:

COPY TO FileName
	[FIELDS FieldList]
	[Scope] [FOR lExpression1] [WHILE lExpression2]
	[[WITH] CDX] | [[WITH] PRODUCTION]
	[NOOPTIMIZE]
	[[TYPE] [FOXPLUS | FOX2X | DIF | MOD
	| SDF | SYLK | WK1 | WKS | WR1 | WRK | XLS | XL5
	| DELIMITED [WITH Delimiter | WITH BLANK | WITH TAB]]]
	[AS nCodePage]

Параметры:
FileName
Задает имя нового файла, создаваемого командой COPY TO. Если вы указали имя файла без расширения, ему назначается расширение, принятое по умолчанию для файлов заданного типа. Если вы не указали тип файла, COPY TO создает новую таблицу Visual FoxPro и назначает этому файлу расширение по умолчанию .DBF.
FIELDS FieldList
Задает поля, копируемые в новый файл. Если опустить предложение FIELDS FieldList, в файл копируются все поля. Если создаваемый файл не является таблицей, memo-поля в него не копируются, даже если их имена включены в список полей.
Scope
Задает диапазон записей, копируемых в файл. Копируются только записи, попадающие в указанный диапазон. Он может задаваться предложениями ALL, NEXT nRecords, RECORD nRecordNumber и REST. Подробнее о предложениях диапазона см. тему Предложения диапазона или главу 2 "Обзор языка программирования" Руководства разработчика.
FOR lExpression1
Задает копирование только тех записей, для которых логическое условие lExpression1 имеет значение "истина" (.T.). Используйте предложение FOR lExpression1 для условного копирования только нужных записей.
Технология Rushmore оптимизирует команду COPY TO с предложением FOR lExpression1, если lExpression1 является оптимизируемым выражением. Для достижения наивысшей производительности используйте оптимизируемое выражение в предложении FOR lExpression1. О Rushmore-оптимизируемых выражениях см. темы SET OPTIMIZE и Основы технологии Rushmore или главу 17 "Оптимизация приложений" Руководства разработчика.
WHILE lExpression2
Задает условие, согласно которому записи копируются, пока значение логического выражения lExpression2 остается равным "истине" (.T.).
[WITH] CDX | [WITH] PRODUCTION
Создает для новой таблицы файл структурного индекса, идентичный файлу структурного индекса существующей таблицы. Теги и выражения индекса из исходного файла структурного индекса копируются в новый файл структурного индекса. Предложения CDX и PRODUCTION эквивалентны.
Не задавайте предложение CDX или PRODUCTION, если вы копируете в файл, отличный от таблицы Visual FoxPro.
NOOPTIMIZE
Блокирует оптимизацию команды COPY TO по технологии Rushmore. Подробнее об этом см. темы SET OPTIMIZE и Основы технологии Rushmore или главу 17 "Оптимизация приложений" Руководства разработчика.
TYPE
Задает тип файла, если создаваемый файл не является таблицей Visual FoxPro. Хотя задавать тип файла нужно обязательно, ключевое слово TYPE можно опустить.
FOX2X
Допустимо только в Visual FoxPro.
Создает новую таблицу, которую можно открывать в предыдущих версиях FoxPro для Windows, FoxPro для Macintosh и FoxPro для MS-DOS (версии 2.0, 2.5 и 2.6).
Для полей типа Numeric, Float, Integer, Double и Currency значения NULL из исходной таблицы преобразуются в нули в новой таблице. Для остальных типов полей значения NULL исходной таблицы преобразуются в новой таблице в пустые значения. Подробнее о пустых значениях см. ISBLANK( ).
В следующей таблице приводится список типов полей Visual FoxPro, которые преобразуются в новой таблице в другие типы полей при наличии параметра FOX2X.

Тип поля Visual FoxPro	Тип поля FoxPro 2.x
Currency			Float
DateTime			Date
Double			Float
Integer			Numeric

DIF
Создает файл VisiCalc типа .DIF (Data Interchange Format). Поля таблицы Visual FoxPro становятся векторами (столбцами), а записи становятся кортежами (строками). Новому файлу назначается расширение имени .DIF, если вы не указали иное расширение в аргументе FileName.
MOD
Создает файл Microsoft Multiplan версии 4.01. Новому файлу Microsoft Multiplan назначается расширение имени .MOD, если вы не задали иное расширение.
SDF
Создает файл формата SDF (System Data Format). Файл SDF представляет собой текстовый ASCII-файл, записи которого имеют фиксированную длину и завершаются возвратом каретки и переводом строки. Поля не ограничиваются. Файлу SDF назначается расширение имени .TXT, если вы не задали иное расширение.
SYLK
Создает файл обмена типа SYLK (Symbolic Link). Файлы SYLK используются в Microsoft MultiPlan. Каждое поле из текущей выбранной таблицы становится столбцом в электронной таблице, а каждая запись становится строкой. Имена файлов SYLK не имеют расширений.
WK1
Создает файл электронной таблицы Lotus 1-2-3 версии 2.x. Каждое поле текущей выбранной таблицы становится столбцом электронной таблицы, а каждая запись становится строкой. Новой электронной таблице назначается расширение имени файла .WK1.
WKS
Создает файл электронной таблицы Lotus 1-2-3 версии 1a. Каждое поле текущей выбранной таблицы становится столбцом электронной таблицы, а каждая запись становится строкой. Новой электронной таблице назначается расширение имени файла .WKS.
WR1
Создает файл электронной таблицы Lotus Symphony версии 1.1 или 1.2. Каждое поле текущей выбранной таблицы становится столбцом электронной таблицы, а каждая запись становится строкой. Новой электронной таблице назначается расширение имени файла .WR1.
WRK
Создает файл электронной таблицы Lotus Symphony версии 1.0. Каждое поле текущей выбранной таблицы становится столбцом электронной таблицы, а каждая запись становится строкой. Новой электронной таблице назначается расширение имени файла .WR1.
XLS
Создает файл электронной таблицы Microsoft Excel версии 2.0. Каждое поле текущей выбранной таблицы становится столбцом электронной таблицы, а каждая запись становится строкой. Новой электронной таблице назначается расширение имени файла .XLS, если вы не задали иное расширение.
XL5
Создает файл электронной таблицы Microsoft Excel версии 5.0. Каждое поле текущей выбранной таблицы становится столбцом электронной таблицы, а каждая запись становится строкой. Новой электронной таблице назначается расширение имени файла .XLS, если вы не задали иное расширение.
DELIMITED
Создает файл с разделителями; это текстовый ASCII-файл, в котором каждая запись заканчивается возвратом каретки и переводом строки. По умолчанию в качестве разделителя полей используется запятая. Поскольку запятые могут входить в состав символьных данных, символьные поля дополнительно разделяются двойными кавычками.
Вновь создаваемым файлам типа DELIMITED назначается расширение имени .TXT, если вы не задаете иного расширения.
DELIMITED WITH Delimiter
Создает файл с разделителями, в котором символьные поля разделяются символом, отличным от кавычек. Этот символ задается аргументом Delimiter.
DELIMITED WITH BLANK
Создает файл с разделителями, в котором поля разделяются не запятыми, а пробелами.
DELIMITED WITH TAB
Создает файл с разделителями, в котором поля разделяются не запятыми, а табуляторами.
AS nCodePage
Задает кодовую страницу для таблицы или файла, создаваемого командой COPY TO. Visual FoxPro копирует содержимое выбранной в данный момент таблицы и в процессе копирования автоматически преобразует данные в кодовую таблицу, указанную для новой таблицы или файла. Если это возможно, Visual FoxPro помечает вновь созданную таблицу или файл указанной кодовой страницей.
Если в качестве nCodePage вы задали кодовую страницу, которая не поддерживается, Visual FoxPro генерирует сообщение об ошибке. Вы можете с помощью функции GETCP( ) для этого значения nCodePage отобразить диалоговое окно Code Page и там задать кодовую страницу для создаваемой таблицы или файла.
Если опустить предложение AS nCodePage, вновь созданная таблица или файл преобразуется в текущую кодовую страницу Visual FoxPro.
Если значение nCodePage равно 0, никакого преобразования кодовых страниц не производится и вновь созданная таблица или файл не помечается кодовой страницей.

Комментарии:
Если установлено упорядочение по индексу, записи копируются в порядке главного индекса.

Пример:

* В следующем примере открывается таблица customer и следующие три
* записи копируются в новый файл данных TEMP.TXT типа DELIMITED.
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer	&& Opens Customer table

COPY NEXT 3 TO temp TYPE DELIMITED
WAIT WINDOW 'This is the delimited text file' NOWAIT
MODIFY FILE temp.txt
DELETE FILE temp.txt

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 04.12.2002