2016-07-14 10 views
0

Ich habe einen Platz, wo ich Tabellen speichern. An diesem Ort habe ich einen Tisch. Lassen Sie uns die Tabelle A nennen. Alle Spalten in den Spalten der Tabelle A sind Varchare. Ich möchte einen Prozess erstellen, der jede Tabelle durchläuft und eine neue Tabelle an einer anderen Stelle in der Datenbank erstellt. Diese Tabelle muss jedoch die richtigen Datentypen anstelle von Varchars haben. Wenn also meine Spalte in Tabelle A eine Spalte mit den Werten 1234 ist, möchte ich ein Feld erstellen, das ein INT und kein Varchar ist.Java Kopieren von Tabellen in ein anderes Schema

Ich habe keine Ahnung, wie man es in Java macht. Könnte mir jemand in die richtige Richtung auf, was die Dinge muss ich lernen würde, und wenn es zu schwierig

Dank

+0

Betrachten Sie Tischmodelle. Sie kopieren einfach das Tabellenmodell selbst, das all diese Informationen enthält. Die jTabelle liest dann das Tabellenmodell. –

+0

1. Ich gehe davon aus, dass Sie ein DBMS verwenden und Ihre Java-Anwendung damit verbunden ist. Welche DBMS benutzen Sie (MySQL, SQL-Server, PostgreSQL, ...)? 2. Kennen Sie die richtigen Datentypen für die neuen Tabellen? Oder müssen Sie sie basierend auf den Tabelleninhalten ableiten? – Barranka

+0

Ich verwende MYSQL. Ich kenne die neuen Datentypen nicht. Ich muss sie anhand des Tabelleninhalts ableiten. – Will

Antwort

0

Wie ich es sehe, Ihr Problem ein paar Teile hat:

  1. EASY - Abrufen der vorhandenen Tabelleninformationen. Sie müssen das DatabaseMetaData von Ihrer jdbc-Verbindung abrufen. Dokumentation zu dieser Klasse ist here, und Google ist dein Freund, wie man dieses Objekt an erster Stelle bekommt. (Tipp: this question sollte Ihnen den größten Teil des Weges bringen)

  2. MEDIUM - herauszufinden, welchen Datentyp Ihre Daten wirklich sind. Wenn Sie versuchen, es auf nur ein paar einfache Typen wie Integer, String und Datumsangaben einzugrenzen, ist das vielleicht nicht so schwer. Sie müssen nur einige Zeilen für jede Spalte auswählen (wobei diese Spalte nicht null ist) und dann versuchen, sie in verschiedene Typen zu analysieren. Wenn es gelingt, ist es wahrscheinlich dieser Typ. Wenn es eine Ausnahme auslöst, ist es nicht. Integer.parseInt(), LocalDateTimeFormatter usw. sind die Dinge, die Sie verwenden werden.

Wenn Sie Tabelle Meta-Daten erhalten möchten, dann tun Sie nur ein „SELECT * FROM < TABLE>“ und die ResultSetMetaData haben alle Informationen, die Sie gehen müssen zu halten.

  1. Sehr schwer - Erstellen von Tabellen mit den neuen, geeigneten Datentypen. Das ist schwer, nicht wegen der Dinge, die bisher erwähnt wurden, sondern weil wir noch nicht über Fremdschlüssel, Indizes und all die anderen guten Dinge gesprochen haben. All diese Dinge programmatisch abzubilden, wird ein sehr schweres Problem sein. Daher empfehle ich NICHT versuchen, diesen Teil zu programmieren. Lassen Sie Ihr Skript stattdessen die Zuordnung alter Datentypen zu neuen Datentypen für jede Tabelle ausgeben. Dann können Sie in Ihren SQL-Manager gehen und das SQL-Skript dazu bringen, diese Tabelle zu generieren. Fast jedes SQL-Datenbankverwaltungstool kann das Erstellungsskript für eine Tabelle generieren. Bearbeiten Sie das Skript mit Ihren neuen Datentypen, geben Sie ihm einen neuen Namen und führen Sie es aus.
Verwandte Themen