package osm.jp.postgis; import java.io.*; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import jp.co.areaweb.tools.database.*; public class Do_sqlfiles { /** * メイン * * java -cp .:SelectBusstop.jar:hayashi_0225.jar:postgresql-9.4.1212.jar osm.jp.SelectBusstop * * * @throws IOException * @throws SQLException * @throws ClassNotFoundException * @throws FileNotFoundException * @throws TransformerException * @throws SAXException * @throws ParserConfigurationException */ public static void main(String[] args) throws FileNotFoundException, ClassNotFoundException, SQLException, IOException { Connection con = DatabaseTool.openDb("postgis"); try { /** * 都道府県ごとのGMLディレクトリの処理 */ File dir = new File("."); File[] dirs = dir.listFiles(); for (File iDir : dirs) { if (checkGMLdir(iDir)) { System.out.println(iDir.getName()); File[] files = iDir.listFiles(); for (File iFile : files) { if (checkFile(iFile)) { System.out.println(iFile.getAbsoluteFile()); // ローカルデータベース内の情報をPostGIS用の「busstop.sql」に出力する InputStreamReader fr = new InputStreamReader(new FileInputStream(iFile), "UTF-8"); BufferedReader br = new BufferedReader(fr); // 既存のreadLine()では\rまたは\n、および\r\nにて改行とみなしている。 String strLine = null; while ((strLine = br.readLine()) != null) { // null=ファイルの最後 sqlExecute(con, strLine); } sqlExecute(con, "commit;"); br.close(); fr.close(); } } } } } finally { DatabaseTool.closeDb(con); } } /** * sqlStrを実行する * @param conn データベースコネクション * @param sqlStr 実行するSQL文 * @throws SQLException SQL実行エラー */ static void sqlExecute(Connection conn, String sqlStr) throws SQLException { Statement stat = conn.createStatement(); stat.execute(sqlStr); stat.close(); } /** * 数値地図情報のデータファイルかどうかを見極める * @param f * @return */ static boolean checkGMLdir(File f) { if (!f.isDirectory()) { return false; } String name = f.getName(); if (!name.startsWith(GML_DIR_PREFIX)) { return false; } if (!name.toUpperCase().endsWith(GML_DIR_PRIFIX)) { return false; } return true; } public static final String GML_DIR_PREFIX = "P11-10_"; public static final String GML_DIR_PRIFIX = "_GML"; /** * SQLファイルかどうかを見極める * @param f * @return */ static boolean checkFile(File f) { String name = f.getName(); if (name.equals("busstop.sql")) { return true; } return false; } }