Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak stworzyć tabelę na podstawie zestawu wyników JDBC

Możemy wyodrębnić najbliższe dopasowanie struktury ze zbioru wyników i skonstruuj tabelę.
Ale nie może to być dokładna replika, jeśli chodzi o nazwę tabeli, klucze, typ silnika, czy pole może być puste, czy nie, itp. .

Poniższy fragment kodu pomaga postępować w taki sposób, aby uzyskać odpowiedni wynik.

String sql = "select * from visitors";
ResultSet rs = stmt.executeQuery( sql );
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
String tableName = null;
StringBuilder sb = new StringBuilder( 1024 );
if ( columnCount > 0 ) { 
    sb.append( "Create table " ).append( rsmd.getTableName( 1 ) ).append( " ( " );
}
for ( int i = 1; i <= columnCount; i ++ ) {
    if ( i > 1 ) sb.append( ", " );
    String columnName = rsmd.getColumnLabel( i );
    String columnType = rsmd.getColumnTypeName( i );

    sb.append( columnName ).append( " " ).append( columnType );

    int precision = rsmd.getPrecision( i );
    if ( precision != 0 ) {
        sb.append( "( " ).append( precision ).append( " )" );
    }
} // for columns
sb.append( " ) " );

System.out.println( sb.toString() );

Wykonywanie z powyższą częścią kodu, wydrukowaną następującym ciągiem:

Create table visitors ( ip VARCHAR( 6 ), bro VARCHAR( 6 ) )

Mam nadzieję, że to pomoże Ci przejść dalej.

Podobny przykład można znaleźć pod adresem: Utwórz tabelę za pomocą zestawu wyników ???

AKTUALIZACJA 1 :

Nie możesz nic zrobić, gdy polegasz tylko na zestawie wyników w aplikacji po stronie klienta.
Powinno to być zawsze główne zapytanie wybierające który wybiera właściwe dane ze złożonego typu danych, takiego jak geometry , address itp.
Przykład :select addess.city, address.zipcode, x( geometry_column ), y( geometry_column )

Aby podać przykład geometry typ danych :
MySQL ma definicje dla swojego Wsparcie przestrzenne . Ale nie jestem pewien, jak daleko są one dobre w porównaniu z SQL Implementacja danych przestrzennych na serwerze .

geometry jest złożonym typem danych i dlatego nie można go pobrać za pomocą bezpośredniego zapytania.
Wymagane są zależne funkcje, które analizują dane z takich kolumn danych i zwracają w postaci czytelnej , możliwy do zidentyfikowania formaty danych.
Przykład :create table geom ( g geometry );
Konwertowanie zestawu wyników z select g from geom użycie JAVA do instrukcji tworzenia tabeli skutkowałoby unknwon typ danych dla kolumny g .

Create table geom ( g UNKNOWN )

Używanie x(g) , y(g) funkcje współrzędnych w kolumnie g zwróci prawidłowe i akceptowalne typy danych.
Zapytanie select x(g), y(g) from geom zostanie przekonwertowany na

Create table  ( x(g) DOUBLE( 23, 31 ), y(g) DOUBLE( 23, 31 ) ) 

AKTUALIZACJA 2 :
Zestaw wyników może być generowany z kombinacji wielu tabel przy użyciu relacji. Istnieje również szansa, że ​​pola zestawu wyników składają się z wyrażeń i ich aliasów. W związku z tym typy danych wynikowych pól kolumn lub aliasów są określane jako dynamiczne. Metadane nie znają dokładnych nazw tabel, nazw kolumn i ich oryginalnych/nadrzędnych typów danych z zapytania.

Tak więc nie można uzyskać

  1. pojedyncza nazwa tabeli i użyj jej.
  2. typ danych kolumny nadrzędnej i użyj go.

Uwaga :dotyczy to również wszystkich innych typów danych specyficznych dla różnych baz danych, takich jak NVARCHAR , itp..Ale proszę zapoznać się z ten post, aby uzyskać alternatywę dla użycia NVARCHAR w MySQL .

Przed próbą takiej dynamicznej migracji danych aplikacja kliencka powinna znać równoważne typy danych i odpowiednio ich używać.

Zobacz także Typy i zakresy danych dla programu Microsoft Access , MySQL i SQL Server aby uzyskać więcej informacji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskaj aktualną wartość AUTO_INCREMENT dla dowolnej tabeli

  2. MySQL- serwer Wamp nie działa po aktualizacji do win10

  3. Jak zaktualizować kaskadowo w MySQL?

  4. GROUP_CONCAT ZAMÓWIENIE WEDŁUG

  5. Skuteczne ustalanie, czy firma jest otwarta, czy nie, na podstawie godzin pracy sklepu