[SQL] 당신은 어떻게 JDBC에 ResultSet.getBinaryStream ()를 사용하여 모든 열에서 값을받을 수 있나요?
SQL당신은 어떻게 JDBC에 ResultSet.getBinaryStream ()를 사용하여 모든 열에서 값을받을 수 있나요?
어떻게 JDBC를 사용하여 플랫 파일 (텍스트 파일)에 전체 테이블을 작성합니까? 지금까지 나는 다음을 시도했습니다 :
Statement statement = connection.createStatement();
ResultSet result = statement.executeQuery("SELECT * FROM tablename");
BufferedInputStream buffer;
FileOutputStream out = new FileOutputStream("flatfile.txt");
while(result.next() )
{
buffer = new BufferedInputStream(result.getBinaryStream("????") );
byte[] buf = new byte[4 * 1024]; //4K buffer
int len;
while( (len = buffer.read(buf, 0, buf.length) ) != -1 )
{
out.write(buf, 0, len );
}
}
out.close();
"????" 그냥 내 자리 표시 자입니다. 나는 인수로 전달하는 것에 붙어입니다.
해결법
-
==============================
1.아래의 코드를 사용하여 모든 당신의 테이블에서 열 이름과 전체 데이터를 얻을 수 있습니다. (즉, 분명 충분하지 경우 :)) writeToFile 방법은 파일을 작성하는 로직을 포함합니다
아래의 코드를 사용하여 모든 당신의 테이블에서 열 이름과 전체 데이터를 얻을 수 있습니다. (즉, 분명 충분하지 경우 :)) writeToFile 방법은 파일을 작성하는 로직을 포함합니다
ResultSetMetaData metadata = rs.getMetaData(); int columnCount = metadata.getColumnCount(); for (int i = 1; i <= columnCount; i++) { writeToFile(metadata.getColumnName(i) + ", "); } System.out.println(); while (rs.next()) { String row = ""; for (int i = 1; i <= columnCount; i++) { row += rs.getString(i) + ", "; } System.out.println(); writeToFile(row); }
-
==============================
2.예를 들어 DB : 여기 (HSQL 예) 메모리에있는 모든 행을보고 싶다면 내가 디버깅을 위해, JDBC 연결에서 매우 유용 테이블을 덤프 방법은 다음과 같습니다
예를 들어 DB : 여기 (HSQL 예) 메모리에있는 모든 행을보고 싶다면 내가 디버깅을 위해, JDBC 연결에서 매우 유용 테이블을 덤프 방법은 다음과 같습니다
public static void spitOutAllTableRows(String tableName, Connection conn) { try { System.out.println("current " + tableName + " is:"); try (PreparedStatement selectStmt = conn.prepareStatement( "SELECT * from " + tableName, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet rs = selectStmt.executeQuery()) { if (!rs.isBeforeFirst()) { System.out.println("no rows found"); } else { while (rs.next()) { for (int i = 1; i < rs.getMetaData().getColumnCount() + 1; i++) { System.out.print(" " + rs.getMetaData().getColumnName(i) + "=" + rs.getObject(i)); } System.out.println(""); } } } } catch (SQLException e) { throw new RuntimeException(e); } }
출력 같다
current <yourtablename> is: ID=1 COLUMN1=abc COLUMN2=null ID=2 COLUMN1=def COLUMN2=ghi ...
-
==============================
3.당신이 자리로 넣어 result.getBinaryStream는 ( "????") 해당 열에 대한 값을 반환합니다.
당신이 자리로 넣어 result.getBinaryStream는 ( "????") 해당 열에 대한 값을 반환합니다.
모든 열을 얻고 싶은 경우에, 당신의 ResultSet에서 ResultSetMetaData에를 사용해야합니다
ResultSetMetaData metadata = resultSet.getMetaData(); int columnCount = metadata.getColumnCount(); for (int i=1; i<=columnCount; i++) { String columnName = metadata.getColumnName(i); System.out.println(columnName); }
from https://stackoverflow.com/questions/24943894/how-do-you-get-values-from-all-columns-using-resultset-getbinarystream-in-jdbc by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] "열은 여기에 허용되지 않습니다"오류 INSERT 문에 (0) | 2020.07.04 |
---|---|
[SQL] "외래 키"와 "제약 외래 키"의 차이 (0) | 2020.07.04 |
[SQL] # 1060 - 중복 열 이름 '아이디' (0) | 2020.07.04 |
[SQL] 오라클 SQL 날짜에 타임 스탬프로 변환 (0) | 2020.07.04 |
[SQL] 나는 MySQL은 테이블 별칭을 만들려면 어떻게해야합니까 (0) | 2020.07.04 |