Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Импорт текстового файла  [new]
toly_m
Member

Откуда:
Сообщений: 89
VFP-9, sp2.

Задача: из SQL Server через текстовый файл перенести данные в FoxPro 9.

1) Из MS SQL Server 2000 получил текстовый файл (приложен):
declare @cmd 	varchar(1000)
set @cmd = 'bcp.exe "sf..f_tmp" out D:\sf\_out\f_tmp_2010-10-08.txt -w -Cacp -Usa -P1 -S' + @@servername
exec master..xp_cmdshell @cmd

2) В Фоксе создал таблицу:
CREATE TABLE f_err(certificat c(14), surname c(25), date_born date, sex c(1))

3) Пытаюсь залить данные из текстового файла:
BROWSE LAST
APPEND FROM "d:\sf\_out\f_tmp_2010-10-08.txt" DELIMITED WITH \n WITH TAB \t

... и получаю ошибку
Command contains unrecognized phrase/keyword

в ключе DELIMITED пишу \n и \t потому-что в справке по SQL Server говорится, что когда выгружается с ключом -w столбцы разделяются символом табуляции \t и строки символом новой строки \n.

Help meee, plz.

К сообщению приложен файл (f_tmp_2010-10-08.txt - 640bytes) cкачать
8 окт 10, 18:08    [9578120]     Ответить | Цитировать Сообщить модератору
 Re: Импорт текстового файла  [new]
Valerii
Member

Откуда:
Сообщений: 749
toly_m,

Зачем так усложнять, разве нельзя дернуть select-ом и сразу в таблицу?
8 окт 10, 18:16    [9578158]     Ответить | Цитировать Сообщить модератору
 Re: Импорт текстового файла  [new]
toly_m
Member

Откуда:
Сообщений: 89
через текстовый файл предпочтительно, т.к. записей много и файл (архивировав) можно передать по электронке.
8 окт 10, 18:21    [9578178]     Ответить | Цитировать Сообщить модератору
 Re: Импорт текстового файла  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6901
Попробуйте из SQL выгрузить в формат CSV.
8 окт 10, 19:23    [9578403]     Ответить | Цитировать Сообщить модератору
 Re: Импорт текстового файла  [new]
toly_m
Member

Откуда:
Сообщений: 89
Этот файл выгружен так:
declare @cmd 	varchar(1000)
set @cmd = 'bcp.exe "sf..f_tmp" out D:\sf\_out\f_tmp_' + left(convert(varchar, getdate(), 120),10) + '.txt -c -C1251 -Usa -P911 -S' + @@servername
print @cmd
exec master..xp_cmdshell @cmd


К сообщению приложен файл (f_tmp_2010-10-08.txt - 320bytes) cкачать
8 окт 10, 19:24    [9578406]     Ответить | Цитировать Сообщить модератору
 Re: Импорт текстового файла  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6901
Вы путаете delimiter и delimited, в Фоксе нельзя явно задать некоторые опции.
Я бы, действительно, сразу бы сделал Фоксом select из SQL, а затем сформировал выходной файл через COPY TO.
Если же вы желаете использовать BCP и импорт в Фокс, можно сделать так (именно указанные ключи):

Команда для SQL
bcp.exe "sf..f_tmp" out ... -t , -c -Cacp ...
Обратите внимание, что кодировка строк должна быть именно однобайтная

Команда для FoxPro
old_format_date=SET("DATE")
SET DATE YMD
APPEND FROM "d:\sf\_out\f_tmp_2010-10-08.txt" DELIMITED
SET DATE (old_format_date)
А здесь мы просто импортируем в стандартном CSV-формате. Строки, хоть и не заключены в кавычки, воспримутся.
8 окт 10, 22:38    [9578890]     Ответить | Цитировать Сообщить модератору
 Re: Импорт текстового файла  [new]
toly_m
Member

Откуда:
Сообщений: 89
Да, действительно, правильнее кажется из VFP подключиться к SQL, сделать select...into... и уже с таблицы VPF выгружать в текстовый файл.

Это все получилось!
Спасибо всем!
12 окт 10, 11:26    [9591497]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить