2013-04-17 3 views
0

나는 내 모든 저장 프로 시저, 테이블 정의, 삽입 문 및 이와 유사한 것을 유지하는 텍스트 파일을 가지고있다.MySQL에서 source 명령으로 한꺼번에 여러 텍스트 파일을 처리하는 방법은 무엇입니까?

\. C:/project/1.sql 
\. C:/project/2.sql 
\. C:/project/3.sql 
\. C:/project/4.sql 
\. C:/project/5.sql 

글쎄, 나는이 문제를 얻을 수 및 주와 같은 이름을 호출하는 다른 텍스트 파일을 만들 : 내가 가진 경우의 그때 내가 그렇게 같은 코드의 모든 5 줄을 입력 할 것, (5 개) 파일을 가정 해 봅시다 나는 코드의 모든 5 줄을 둘 것입니다 그리고 그 5 개 개의 파일을 실행하기를 원한다면, 나는 단지이 간단한 줄을 입력해야합니다 .SQL :

\. C:/project/main.sql 

그러나이 가진 문제는 내가 이동하는 경우이다 모든 파일을 다른 위치에 저장하거나 폴더가 저장된 폴더의 이름을 바꾸면 모든 5 줄의 경로 문자열을 변경해야합니다. 당신 같이, 이제 질문을

\. C:/projects/application1/1.sql 
\. C:/projects/application1/2.sql 
\. C:/projects/application1/3.sql 
\. C:/projects/application1/4.sql 
\. C:/projects/application1/5.sql 

: 나는 프로젝트/응용 프로그램 1/ 같은에 폴더 프로젝트의 위치를 ​​변경한다면 예를 들어, 나는 거의 전체를 다시 입력해야합니다 이미 짐작할 수 있겠지만,이 모든 문제를 저장하는 방법은 파일을 이동하려는 경우 변경해야하는 것은 코드 한 줄뿐입니다. 나는 이런 식으로 뭔가를 시도했지만 그것이 작동하지 않았다?

SET @PATH = 'C:/projects/application1/'; 

\. SELECT CONCAT(@PATH, 1.sql) 
\. SELECT CONCAT(@PATH, 2.sql) 
\. SELECT CONCAT(@PATH, 3.sql) 
\. SELECT CONCAT(@PATH, 4.sql) 
\. SELECT CONCAT(@PATH, 5.sql) 
+0

을 Java 응용 프로그램을 작성하지 왜 –

답변

0
다음

나는 프로그램을 작성은, 어쩌면 당신을 도울 수 :

import java.io.File; 
import java.io.IOException; 

/** 
* Author: NobodyElse 
* Date: 13-4-17 
* Time: 11:00 AM 
* Description: bulk import mysql 
*/ 
public class ImportUtil { 

    public static void main(String[] args) { 

     if (args.length < 3) { 
      System.out.println("Usage:" + ImportUtil.class.getSimpleName() + " filePath dbName dbUser dbPass"); 
      throw new IllegalArgumentException(); 
     } 

     String filePath = args[0]; 
     String dbName = args[1]; 
     String dbUser = args[2]; 
     String dbPass = args[3]; 

     File path = new File(filePath); 
     if (!path.exists() || !path.isDirectory()) { 
      System.out.println(filePath + " not exist OR isn't a directory"); 
      throw new RuntimeException(); 
     } 
     else { 
      File[] files = path.listFiles(); 
      for (File file : files) { 
       String fileName = file.getPath(); 
       if (fileName.endsWith(".sql")) { 
        System.out.println(fileName); 
        execute(fileName, dbName, dbUser, dbPass); 
       } 
      } 
     } 
     System.out.println("ALL DONE!"); 
    } 

    public static void execute(String fileName, String dbName, String dbUser, String dbPass){ 

     String mysqlPath = "cmd /c D:\\Program\" \"Files\\MySQL\\MySQL\" \"Server\" \"5.5\\bin\\mysql.exe"; 

     StringBuffer cmd = new StringBuffer(mysqlPath); 
     cmd.append(" -u").append(dbUser); 
     cmd.append(" -p").append(dbPass).append(" "); 
     cmd.append(dbName).append("<").append(fileName); 

     try { 
      Runtime.getRuntime().exec(cmd.toString()); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

글쎄, 그 멋지다, 하지만 실제로 MySQL의 영역 내에서보다 쉬운 솔루션을 찾고있었습니다. 그래도 고마워. – Mikhail

관련 문제