2009-08-11 3 views
2

클라이언트를 분석해야하는 DBF 파일 (약 1100 개)이 많이 있습니다. 각 파일에는 하나의 테이블이 있습니다. 각 테이블에 대해 쿼리를 수행하고 결과를 하나의 큰 결과 테이블 (모든 파일의 결과를 보유 할)에 복사 한 후 다음 DBF 파일로 이동해야합니다. 결국에는 나중에 조작 할 수있는 형식으로 결과 테이블을 저장해야합니다. 누구든지 나를 쉽게 만들 수있는 스크립팅 언어를 알고 있습니까?DBF 파일을 조작하기위한 SQL 스크립팅 언어 찾기

몇 가지주의 사항이 있습니다. 1.) Vista에서 작동하는 무언가가 필요합니다 (DOS, Python 또는 GNU Octave에서 실행되는 무언가가 필요합니다). 2.) 저는 데이터베이스 관리자가 아니지만 프로그래밍 능력이 좋습니다. 3) SQL에 대한 기본적인 지식 만 가지고 있습니다. 내가 쿼리를 쓸 수 내 문제는 DBF 파일을 열고 결과를 저장하고 있습니다. 4.) 실제로 MS Access를 사용하여이 작업을 수행했지만 지저분한 솔루션입니다. 그래서 저는 Access를 사용하지 않는 무언가를 찾고 있습니다.

저는 SQL을위한 다양한 스크립팅 언어를 읽었습니다. 내가 본 사이트의 대부분은 관계, 보안 및 모든 것들을 설정하는 서버에 관한 것들로 들어갑니다. 이 이슈들은 내 이해를 넘어서고 내 관심 사항이 아닙니다. 이 파일을 쿼리하고 결과를 얻고 나가고 싶습니다. 초보자도 쉽게 접근 할 수있는 무언가가 있습니까?

도움을 주시면 감사하겠습니다.

답변

1

SSIS에서이 작업을 수행합니다. 루핑 및 데이터 변환은 SSIS에서 매우 쉽습니다.

+0

SSIS : SQL Server 통합 서비스 http://msdn.microsoft.com/en-us /library/ms141026.aspx –

1

첫 번째 선택은 Visual FoxPro입니다. .dbf 파일을 기본적으로 처리하고 대화식 환경을 가지며 SQL SELECT 기능을 제공합니다. SELECT 문에는 쿼리 결과를 다른 테이블로 보내는 INTO 절이 있습니다. 일부 종류의 MSDN 구독에는 DVD의 FoxPro가 포함되어 있으며 MSDN에서 다운로드 할 수 있습니다.

dBASE도 사용할 수 있습니다.

필요한 경우 .dbf 파일 구조는 코드로 조작하기 쉽습니다. 과거에는 C 및 Delphi에서 .dbf 파일을 수정하는 코드를 작성해야했습니다. 그것은 결코 오후의 일 이상이었습니다. Google Code Search은 아마도 주요 프로그래밍 언어에 대해 .dbf 관련 코드를 산출 할 것입니다. .dbf 파일 형식 및 관련 파일 형식은 MSDN에 설명되어 있습니다.

1

매우 기초적인 SQL 지원이있는 python dbf module을 작성했습니다. 그러나 SQL이 필요에 따라 다르더라도 파이썬 구문을 사용하여 dbf 파일을 쿼리하는 것은 쉽습니다.

몇 가지 예 :

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 : 위의 예와 마찬가지로 모든 지원되는 버전에서 동일하게 작동합니다. 이전 버전을 사용하고 있다면'.pql (...) '대신'.sql (...)'을 사용할 수 있습니다. –

관련 문제