2009-08-11 4 views
2

У меня есть большая коллекция файлов DBF (около 1100 из них), которые мне нужно проанализировать для клиента. Каждый файл содержит одну таблицу. Мне нужно выполнить запрос в каждой таблице, скопировать результаты в одну большую таблицу результатов (которая будет содержать результаты из всех файлов), а затем перейти к следующему DBF-файлу. В конце мне нужно сохранить таблицу результатов в формате, который я могу манипулировать позже. Кто-нибудь знает язык сценариев, который может сделать это легким для меня?Ищете язык сценариев SQL для управления файлами DBF

Есть несколько оговорок: 1.) Мне нужно что-то, что работает в Vista (что-то, что работает в DOS, python или GNU Octave тоже нормально). 2.) Я не администратор базы данных, но у меня неплохие навыки программирования. 3.) У меня есть только базовые рабочие знания SQL. Я могу написать запросы, моя проблема заключается в открытии файлов DBF и сохранении результатов. 4.) Я действительно сделал это с помощью MS Access, но это грязное решение. Поэтому я ищу что-то, что не использует Access.

Я читал на разных языках сценариев для SQL. Большинство сайтов, которые я видел, затрагивают вопросы о серверах, настройке отношений, безопасности и всех этих вещах. Эти проблемы выходят за рамки моего понимания и не являются моей проблемой. Я просто хочу запросить эти файлы, получить результаты и выйти. Есть ли что-то, что легко доступно для новичков, но значительно мощнее?

Любая помощь будет высоко оценена.

ответ

1

Я бы сделал это с помощью SSIS. Преобразование петли и данных в SSIS довольно легко.

+0

SSIS: SQL Server Integration Services http://msdn.microsoft.com/en-us /library/ms141026.aspx –

1

Мой первый выбор будет Visual FoxPro. Он обрабатывает файлы .dbf изначально, имеет интерактивную среду и предоставляет возможность SQL SELECT. Оператор SELECT имеет предложение INTO, которое отправляет результаты запроса в другую таблицу. Некоторые виды подписки MSDN включают FoxPro на DVD-дисках и делают его доступным для загрузки с MSDN.

dBASE также доступен.

При необходимости файловая структура .dbf легко манипулировать с помощью кода. Раньше мне приходилось писать код для изменения файлов .dbf в C и Delphi. Это была не более чем дневная работа. A Google Code Search, вероятно, даст .dbf-код для любого основного языка программирования. Формат файла .dbf и связанные с ним форматы файлов задокументированы на MSDN.

1

Я написал python dbf module, который имеет очень рудиментарную поддержку SQL. Однако даже если SQL не соответствует вашим потребностям, легко запросить файлы dbf с помощью синтаксиса python.

Некоторые примеры:

import dbf 

Чтобы создать таблицу результатов и добавить записи к нему:

results = dbf.Table('results_table', 'name C(50); amount N(10, 4)') 
record = results.append() 
with record: 
    record.name = 'something' 
    record.amount = 99.928 

# to open an existing table 
table = dbf.Table('some_dbf_table').open() 

# find all sales >= $10,000 
records = table.pql("select * where sales >= 10000") 

# find all transactions for customer names that start with Bob 
records = table.pql("select * where customer.startswith('Bob')") 

# nevermind thin sql veneer, just use python commands 
records = table.find("sales >= 10000 and customer.startswith('Bob')") 

# sum sales by customer 
customer_sales = default_dict(int) # if customer not already seen, will default to 0 
for record in table: 
    customer_sales[record.customer] += record.sales 

# now add to results table and print them out 
for name, total in sorted(customer_sales.items()): 
    result_record = results.append() 
    with result_record: 
     result_record.name = name 
     result_record.amount = total 
    print "%s: %s" % (name, total) 
+0

Как работает метод запроса для таблиц dbf3? Можете ли вы привести пример? – LarsVegas

+0

@LarsVegas: Как и в приведенных выше примерах, они работают одинаково для всех поддерживаемых версий. Если вы используете более старую версию, это может быть написано '.sql (...)' вместо '.pql (...)'. –