2014-05-21 2 views
3

사이트를 검색했지만 필요한 정보를 찾지 못했습니다. 나는Java 문자열을 SQL 구문으로 포맷하는 방법은 무엇입니까?

String formattedSQL = formatSQL(unformatted); 
System.out.println(formattedSQL); 

나에게 다음과 같은 텍스트를 줄 것이다 있도록 내가 나에게 내 원래의 SQL 문을 포맷 된 버전을 제공 formatSQL(sqlString) 같은 방법을 찾고 있어요 SQL 문

String unformattedSQL = "select id, name, address, zip from schema123.person where name like '%stu%'"; 

을 가지고

SELECT id, name, 
     address, zip 
FROM schema123.person 
WHERE name LIKE '%stu%' 

오리지널 (정확한 들여 쓰기) inal SQL 문은 실제로 매우 길며 다른 메서드에서 동적으로 생성되므로 (이 메서드를 변경할 수 없음) SQL을 외부 파일에 넣을 수는 없습니다. SQL이 실행 된 후에는 로그 파일에 저장해야합니다. SQL 문을 로그 파일에서 포맷하고 싶습니다.

가장 좋은 방법은 무엇입니까? 그리고 문제를 일반화하는 방법 ... 등 XML, C#을, 구글 코드 싸게 치장을하지만 자바 비슷한 아마 뭔가 같은 다른 구문이 작업을 수행하는

+0

에서 제공하는 SQLFormatter 갈 수 @ DonRoby 네, 맞습니다. – stupid

+0

질문을 복제로 표시하는 것이 위의 노란색 통지에있는 중복 질문에 대한 링크를 제공한다면 좋을 것입니다. 그렇게하면 필요한 정보를 더 빨리 찾을 수 있습니다. –

답변

4
+1

팁 주셔서 감사합니다. 그것은 작동하지만 예상했던 것과는 다르다. SQLFormatter는, 원의 SQL 캐릭터 라인의 형식이 조금이라도 좋은 경우에만 올바르게 동작합니다. 그러나 제 경우에는 쿼리가 실제로보기 흉하고, 일관성없는 들여 쓰기, 여러 수준의 하위 쿼리, 콜론 뒤에 빈 줄이 될 수 있습니다. 나는 이클립스 포맷 소스 코드에서 수정 될 필요가있다. 또한 서식 규칙을 정의 할 가능성이있는 경우 가장 좋습니다. – stupid

관련 문제