Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > MS FoxPro *.dbf -> MS SQL Server


Автор: Marduk 8.1.2008, 14:38
ситуация: по почте приходят прайсы в формате *.dbf, но созданные в FoxPro, причем полностью совместимы с форматом dBase 5.
прога, которая из обрабытывает написана на делфи и использует для хранения данных MS SQL 2005 Express и имортирует dbf файлы в таблицы на сервере. В файле порядка 10000 записей, если копировать через BDE простым циклом, то получается очень долго (минуты две). Раньше были dbf файлы написанные не знаю на чем, но в формате dBase 5, я создал DTS пакет для импорта из dBase 5 в MS SQL и все было прекрасно, таблицы копировались за пару секунд, но потом стали приходить файлы, написанные на FoxPro и на сервере вместо русских букв появились иероглифы. 
Вопрос: можно ли изменить тип подключения в DTS файле под FoxPro *.dbf и какого провайдера для этого надо выбрать, либо подскажите как импортировать такой файл целиком в одноименную таблицу на сервере при помощи утилиты bcp

Автор: Данкинг 8.1.2008, 15:16
Цитата(Marduk @ 8.1.2008,  14:38)
 но потом стали приходить файлы, написанные на FoxPro и на сервере вместо русских букв появились иероглифы. 

Попробуй сохранить файл в кодировке 866. Т.е. открываешь файл dbf фоксом и копируешь в новый:
Код

copy to NEW_FILE fox2x as 866

Автор: Marduk 8.1.2008, 15:24
У меня нет FoxPro, у меня только файл, сформированный в нем и все... У меня есть только Delphi и MS SQL Server

Автор: Данкинг 8.1.2008, 17:40
Цитата(Marduk @ 8.1.2008,  15:24)
У меня нет FoxPro, у меня только файл, сформированный в нем и все... У меня есть только Delphi и MS SQL Server

Ну, поставь фокс, пригодится. smile Можно будет компилировать фоксовые программы (в .fxp), а затем из дельфи их запускать обычным способом.

Автор: Marduk 8.1.2008, 17:57
Цитата(Данкинг @ 8.1.2008,  17:40)
Цитата(Marduk @ 8.1.2008,  15:24)
У меня нет FoxPro, у меня только файл, сформированный в нем и все... У меня есть только Delphi и MS SQL Server

Ну, поставь фокс, пригодится. smile Можно будет компилировать фоксовые программы (в .fxp), а затем из дельфи их запускать обычным способом.

))
А иде ево взять? =) 
дорогущий ведь, а так даже пиратскую взять негде

Автор: Akina 8.1.2008, 18:17
Создайте подключенный к SQL-серверу ADP-проект. Он прекрасно импортирует DBF-ы с любого рода заморочками и столь же прекрасно заливает данные на сервер. Можно даже организовать промежуточные просмотр и обработку импортируемых данных.

Автор: Marduk 8.1.2008, 18:29
Цитата(Akina @ 8.1.2008,  18:17)
Создайте подключенный к SQL-серверу ADP-проект. Он прекрасно импортирует DBF-ы с любого рода заморочками и столь же прекрасно заливает данные на сервер. Можно даже организовать промежуточные просмотр и обработку импортируемых данных.

Честно говоря, ни разу с этим не сталкивался.. Какими средствами можно создать такой проект и что это такое?

Автор: Данкинг 8.1.2008, 18:45
Цитата(Marduk @ 8.1.2008,  17:57)
))
А иде ево взять? =) 
дорогущий ведь, а так даже пиратскую взять негде

Ну как где, диски же продаются с софтом. Просто с SQL я работал весьма мало и про всякие описываемые тут программы не в курсе, зато с DBF связано 100% моей работы и глюки, которые бывают при импорте/экспорте, я представляю.

Автор: Akina 8.1.2008, 18:47
Цитата(Marduk @  8.1.2008,  19:29 Найти цитируемый пост)
Какими средствами можно создать такой проект и что это такое? 

MS Access 2002 или старше под рукой есть? Запустите и выберите пункт "Создать новый проект" (!!! не базу данных !!!). Выберите SQL-сервер, установите и протестируйте параметры подключения... и так далее.

Автор: Marduk 8.1.2008, 19:18
Цитата(Akina @ 8.1.2008,  18:47)
Цитата(Marduk @  8.1.2008,  19:29 Найти цитируемый пост)
Какими средствами можно создать такой проект и что это такое? 

MS Access 2002 или старше под рукой есть? Запустите и выберите пункт "Создать новый проект" (!!! не базу данных !!!). Выберите SQL-сервер, установите и протестируйте параметры подключения... и так далее.

Спасибо, попробую

Автор: Marduk 8.1.2008, 20:13
блин.. ADP тоже неудобно..... (( Лучше бы средствами SQL Server только, было бы прекрасно..
нашел один вариант, зацените его перспективность:
Код

select * from OPENROWSET('MSDASQL', 'Driver={Microsoft Visual FoxPro Driver};UID=;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=No;Deleted=Yes;SourceDB=D:\DATA\','Select * from table1.dbf')


или так:
Код

insert into Table1 select * from OPENROWSET('VFPOLEDB','DBF_PATH';'';'','select * from [DBF_NAME]')

Автор: nitr 8.1.2008, 21:18
Для FoxPro есть драйвер ODBC/OLE/ADO, т.е. легко можно будет работать с БД FoxPro из Делфи (качать с microsoft.com). Сам FoxPro в этом случае не требуется. У меня огромные таблица из FoxPro обрабатываются достаточно быстро.
Как работать с MS SQL, думаю знаете.

Дальше только написание программы.

Автор: Marduk 10.1.2008, 18:57
Все равно не получается что то.. не пойму что с файлом, - кодировка у него OEM (Кириллица - OS2-OEM cp866), формат вроде dBase. В DBU открывается нормально, в Excel тоже, но при импорте в SQL Server при любом провайдере (FoxPro таблицы, dBase 5, ODBC) на сервере - таблица с иероглифами вместо русских букв.... НО если из делфи подключиться к нему через BDE с компонентом TTable, то русские буквы появляются при изменении свойства TableType = FoxPro... 

Скачал драйвер OLE DB для FoxPro, подключаюсь через АДО к этому файлу, но иероглифы по прежнему остались. На что влияет свойство Sequence Type? Там есть Machine и Russian, но ничего не меняется при изменении этих свойств.

Еще вопрос: можно ли в подключении через АДО указать Langdriver другой?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)