2014-01-22 2 views
0

데이터베이스의 테이블에 대한 자동화 된 문서를 만들고 싶습니다. 출력은 Excel 테이블이어야합니다.문자열로 트리거되고 문자열로 중지 된 배열 만들기

첫 번째 두 열은 열 이름과 null 값을 포함 할 수 있는지 여부로 구성되어야합니다. 필자는 모든 데이터베이스에 액세스 할 필요가 없기 때문에 테이블을 만드는 데 사용 된 SQL 스크립트에서 데이터를 추출하려고합니다. 다음과 같이

쿼리는 포맷 :

CREATE TABLE tablename 
(
column_name1 DATATYPE(len) DEFAULT "" NOT NUll 
column_name2 DATATYPE(len) DEFAULT "" NOT NUll 
column_name2 DATATYPE(len) DEFAULT "" NOT NUll 
) 

내가 배열의 모든 COLUMN_NAMES을 저장할. 따라서 스크립트에서 수행 할 작업은 다음과 같습니다.

SQL 스크립트를 실행하십시오.
그가 찾고있는 테이블 + 테이블 만들기를 찾으면 다음 "("을 찾을 때까지 ")"다음에 시작하여 배열에 행을 추가하십시오. 배열의 값은 첫 번째 공백 뒤에 잘라야합니다.
문자열에 "not null"이 포함되어 있으면 "x"도 배열의 두 번째 열을 추가하십시오.

저는 전체 스크립팅 초보자입니다. 문자열을 자르고 필요한 루프를 만드는 방법을 알고 있습니다. 그러나 나는 올바른 문자열을 선택하는 방법을 모른다. 나는 웹을 검색했지만 havent은 실제로 올바른 답을 찾았다. 내 처분에

내가 PowerShell 및 VBScript를이는

너희들이 나를 도울 수 있습니까?

감사합니다.

+3

샘플 시작 값과 예상 결과를 포함 할 수 있습니까? – mjolinor

답변

0

여기에 VBScript가 있지만 Powershell을 사용할 수 있으면이를 권하고 싶습니다.
예제와 같은 일반 표현식을 사용하여 tablename과 데이터를 추출하십시오. 거기에서 데이터 부분을 사용하여 라인을 분할하고 (vbNewLine의 split 함수 사용) 각 라인에서 데이터를 추출 할 수 있습니다. 데이터를 처리하여 배열에 추가합니다.

testlines = join(array(_ 
"nonsense", _ 
"CREATE TABLE tablename", _ 
"(", _ 
"column_name1 DATATYPE(len) DEFAULT """" NOT NUll", _ 
"column_name2 DATATYPE(len) DEFAULT """" NOT NUll", _ 
"column_name2 DATATYPE(len) DEFAULT """" NOT NUll", _ 
")", _ 
"more nonsense"), vbNewLine) 

Set re = new RegExp 
re.Global = true 
re.Pattern = "CREATE TABLE (.*)[^\(]*\(([\s\S]*)\)" 
Set matches = re.Execute(testlines) 
Wscript.echo matches(0).submatches(0) ' returns 'tablename' 
Wscript.echo matches(0).submatches(1) 
    ' returns column_name1 ... to ... NOT NUll on the last line 

나는 마지막 부분을 기꺼이 도와 주겠다.하지만 먼저 약간의 노력을 보여줘야합니다. 푸딩의 증거가 먹는 중입니다.