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

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

Параметры

FileName

Задает имя нового создаваемого файла. Если вы указали имя файла без расширения, COPY TO назначит ему расширение, принятое по умолчанию для файлов заданного типа. Если вы не указали тип файла, COPY TO оздает новую таблицу Visual FoxPro и назначает этому файлу расширение по умолчанию .dbf.

DATABASE DatabaseName

Определяет базу данных, в которую добавляется новая таблица.

NAME LongTableName

Определяет длинное имя для новой таблицы. Длинные имена могут содержать до 128 символов и могут использоваться вместо коротких имен файлов в базе данных.

FIELDS FieldList

Определяет, какие поля копировать в новый файлу. Если вы опустите FIELDS FieldList, все поля будут скопированы в файл. Если создаваемый файл не является таблицей, memo поля не будут скопированы в новый файл, даже если имена memo полей включены в cписок полей.

FIELDS LIKE Skeleton

Указывает, что в новый файл будут включены только те поля из оригинальной таблицы, которые соответствуют шаблону Skeleton.

FIELDS EXCEPT Skeleton

Определяет, что все поля кроме тех, которые соответствуют шаблону Skeleton будут включены в новый файл.

Scope

Задает диапазон записей, копируемых в файл. Копируются только записи, попадающие в указанный диапазон. Он может задаваться предложениями: ALL, NEXTnRecords, RECORDnRecordNumber, и REST. Подробнее о предложениях диапазона смотрите Выражение Scope.

FOR lExpression1

Определяет, что COPY TO копирует только те записи, для которых логическое условие lExpression1 вычисляется в истину (.T.). Используйте предложение FORlExpression1 для условного копирования только нужных записей.

WHILE lExpression2

Задает условие, согласно которому записи копируются, пока значение логического выражения lExpression2 остается равным "истине" (.T.).

[WITH] CDX | [WITH] PRODUCTION

Создает для новой таблицы файл структурного индекса, идентичный файлу структурного индекса существующей таблицы. Теги и выражения индекса из исходного файла структурного индекса копируются в новый файл структурного индекса. Предложения CDX и PRODUCTION эквивалентны. Однако, не включайте предложения CDX или PRODUCTION если вы копируете в файл неявлюющийся новой таблицей Visual FoxPro.

NOOPTIMIZE

Блокирует оптимизацию команды COPY TO по технологии Rushmore. Для получения дополнительной информации, смотрите Команда SET OPTIMIZE and Использование оптимизации запросов Rushmore для ускорения доступа к данным.

TYPE

Задает тип файла, если создаваемый файл не является таблицей Visual FoxPro. Хотя задавать тип файла нужно обязательно, ключевое слово TYPE можно опустить.

FOXPLUS

Memo-файлы Visual FoxPro имеют структуру, отличную от структуры memo-файлов FoxBASE+™. Если исходная таблица Visual FoxPro содержит memo-поле, включите предложение FOXPLUS , чтобы создать таблицу, которую можно будет использовать в FoxBASE+. Memo-поле Visual FoxPro не может содержать двоичные данные, поскольку FoxBASE+ не поддерживает двоичные данные в memo-полях.

FOX2X

Создает новую таблицу, которую можно открывать в предыдущих версиях FoxPro (версии 2.0, 2.5, и 2.6).

Для полей типа Numeric, Float, Integer, Double и Currency значения NULL из исходной таблицы преобразуются в нули в новой таблице. Для остальных типов полей значения NULL исходной таблицы преобразуются в новой таблице в пустые значения. Подробнее о пустых значениях смотрите Функция ISBLANK( ).

В следующей таблице приводится список типов полей Visual FoxPro, которые преобразуются в новой таблице в другие типы полей при наличии параметра FOX2X.

Тип поля Visual FoxPro Тип поля FoxPro 2.x

Blob

Memo

Currency

Float

DateTime

Date

Double

Float

Integer

Numeric

Varbinary

Memo

Varchar

Memo

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, если вы не задали иное расширение. Установка SET CENTURY игнорируется при создании SDF файлов командой COPY TO.

Если файлы SDF включают данные типа date, то они должны быть в формате YYYYMMDD для достижения эффективного обратного преобразования в таблицы Visual FoxPro.

Если информация типа date сохранена в неоднозначном формате, вы должны удостовериться, что даты находятся в формате YYYYMMDD прежде, чем вы выполняете операцию COPY TO.

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.

CSV

Создает файл значения в котором разделены запятой. В файле CSV первая строка - имена полей, следующие строки - значения полей разделенные запятыми.

XLS

Создает файл электронной таблицы Microsoft Excel версии 2.0. Каждое поле текущей выбранной таблицы становится столбцом электронной таблицы, а каждая запись становится строкой. Новой электронной таблице назначается расширение имени файла .XLS, если вы не задали иное расширение.

NoteNote

Хотя вы и можете экспортировать максимум 65,535 строк, включая одну строку, зарезервированную для заголовка полей, версии Excel ранее чем 8.0 (Excel 97) отображают только первые 16,384 строк и не могут импортировать файлы, содержащие больше чем 32,767 строки.

XL5

Создает файл электронной таблицы Microsoft Excel версии 5.0. Каждое поле текущей выбранной таблицы становится столбцом электронной таблицы, а каждая запись становится строкой. Новой электронной таблице назначается расширение имени файла .XLS, если вы не задали иное расширение.

NoteNote

Хотя вы и можете экспортировать максимум 65,535 строк, включая одну строку, зарезервированную для заголовка полей, версии Excel ранее чем 8.0 (Excel 97) отображают только первые 16,384 строк и не могут импортировать файлы, содержащие больше чем 32,767 строки.

DELIMITED

Создает файл с разделителями; это текстовый ASCII-файл, в котором каждая запись заканчивается возвратом каретки и переводом строки. По умолчанию в качестве разделителя полей используется запятая. Поскольку запятые могут входить в состав символьных данных, символьные поля дополнительно разделяются двойными кавычками.

Вновь создаваемым файлам типа DELIMITED назначается расширение имени .TXT, если вы не задаете иного расширения.

DELIMITED WITH Delimiter

Создает файл с разделителями, в котором символьные поля разделяются символом, отличным от кавычек. Этот символ задается аргументом Delimiter.

DELIMITED WITH BLANK

Создает файл с разделителями, в котором поля разделяются не запятыми, а пробелами.

DELIMITED WITH TAB

Создает файл с разделителями, в котором поля разделяются не запятыми, а табуляторами.

DELIMITED WITH CHARACTER Delimiter

Creates a delimited file with all fields enclosed by the character specified with Delimiter. If Delimiter is a semicolon (;), used in Visual FoxPro to indicate command line continuation, enclose the semicolon in quotation marks. You can also specify the BLANK and TAB keywords for Delimiter.

You can combine the WITH Delimiter clause with the WITH CHARACTER clause. For example, the following command creates a text file with character fields enclosed by underscores and all fields delimited from each other with semicolons:

  CopyCode imageCopy Code
COPY TO mytxt.txt DELIMITED WITH _ WITH CHARACTER ';'
AS nCodePage

Задает кодовую страницу для таблицы или файла, создаваемого командой COPY TO. Visual FoxPro копирует содержимое выбранной в данный момент таблицы и в процессе копирования автоматически преобразует данные в кодовую таблицу, указанную для новой таблицы или файла. Если это возможно, Visual FoxPro помечает вновь созданную таблицу или файл указанной кодовой страницей.

Если опустить предложение AS nCodePage, e, вновь созданная таблица или файл преобразуется в текущую кодовую страницу Visual FoxPro.

Expand imageRemarks

Шаблон Skeleton поддерживает групповые символы. Например, чтобы скопировать все поля, которые начинаются с символов A и P, используйте следующее:

  CopyCode imageCopy Code
COPY TO mytable FIELDS LIKE A*,P*

Предложение LIKE может использоваться в комбинации с предложением EXCEPT:

  CopyCode imageCopy Code
COPY TO mytable FIELDS LIKE A*,P* EXCEPT PARTNO*

Технология Rushmore допускает оптимизацию COPY TO с предложением FOR lExpression1 если lExpression1 является оптимизируемым выражением. Для повышения производительности рекомендуется пользоваться в предложении FOR lExpression1 оптимизируемым выражением. Подробнее о выражениях, оптимизируемых по технологии Rushmore, смотрите Команда SET OPTIMIZE и Использование оптимизации запросов Rushmore для ускорения доступа к данным.

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

Если в качестве nCodePage вы задали кодовую страницу, которая не поддерживается, Visual FoxPro генерирует сообщение об ошибке. Вы можете использовать функцию GETCP( ) для nCodePage чтобы отобразить диалоговое окно Code Page и там задать кодовую страницу для создаваемой таблицы или файла.

Команда COPY TO сохраняет автоувеличивающиеся настройки кроме следующих условий:

  • Когда cписок полей, определенный, используя COPY TO...FIELDS не включает поля которая используют автоувеличение.

  • Когда используется параметр TYPE в команде COPY TO, независимо от типа, определенного в соответствии с пунктом.

Результирующяя таблица начинает увеличивать щетчик начиная с значения NextValue исходной таблицы. Например, предположим что NextValue в исходной таблице 1000 со значением Step 1. Тогда первая строка результирующей таблицы будет иметь значение 1001; вторая строка 1002, и так далее.

Используя команду COPY TO, следует знать, что Команда SET VARCHARMAPPING будет воздействовать на вычисляемые поля (символьные выражения переменной длины) установленные командой SET FIELDS.

Expand imageПример

В следующем примере открывается таблица customer и следующие три записи копируются в новый файл данных Temp.txt типа DELIMITED.

  CopyCode imageCopy Code
CLOSE DATABASES
OPEN DATABASE (HOME(2) + '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

Expand imageСмотрите также