2016-07-14 6 views
0

私はテーブルを格納する場所があります。 私はテーブルがあります。表Aのすべての列は、varcharsです。 すべてのテーブルを通過し、データベースの別の場所に新しいテーブルを作成するプロセスを作成したいと思います。 ただし、このテーブルにはvarcharsの代わりに正しいデータ型が必要です。 したがって、テーブルAのカラムが値1234のカラムである場合、INTであるフィールドをvarcharではなく作成します。Javaテーブルを別のスキーマにコピーする

私はどのようにjavaでそれを行うには分かりません。誰かが私が学ばなければならないだろうか、物事に正しい方向に私を指す、それはあまりにも難しい

おかげ

+0

tablemodelsを見てください。すべての情報を含むテーブルモデル自体をコピーするだけです。その後、jTableはテーブルモデルを読み取ります。 –

+0

1. DBMSを使用しており、Javaアプリケーションが接続されていると仮定しています。どのDBMSを使用していますか(MySQL、SQL-Server、PostgreSQL、...)? 2.新しいテーブルの正しいデータ型を知っていますか?または、テーブルの内容に基づいて推論する必要がありますか? – Barranka

+0

私はMYSQLを使用しています。私は新しいデータ型を知らない。私はテーブルの内容に基づいて推論する必要があります。 – Will

答えて

0

であれば、私はそれを見るように、あなたの問題は、いくつかの部分がありでした:

  1. をEASY - 既存のテーブル情報の取得。 jdbc接続からDatabaseMetaDataを取得する必要があります。そのクラスのドキュメントはhereであり、Googleはそのオブジェクトを最初に取得する方法についてはあなたの友人です。 (ヒント:this questionはほとんどの場合あなたを得るはずです)

  2. MEDIUM - あなたのデータが実際にどのようなデータタイプであるかを調べる。整数、文字列、日付のような単純な型に限定しようとすると、実際にそれほど難しくないかもしれません。列ごとにいくつかの行を選択するだけで(その列がnullでない場合)、さまざまな型に解析して解析する必要があります。それが成功すれば、おそらくそのタイプです。例外がスローされた場合、例外はスローされません。 Integer.parseInt()、LocalDateTimeFormatterなどは、使用するものです。

あなたがテーブルのメタデータを取得したい場合は、単に「> < TABLE SELECT * FROM」んとのResultSetMetaDataは、あなたが続けるために必要なすべての情報を持っています。

  1. VERY HARD - 新しい適切なデータ型を使用してテーブルを作成する。これはこれまで言及されてきたものが原因ではなく、外部キー、インデックス、その他すべての優れたものについてまだ話をしていないためです。プログラムでこれらすべてのものをマッピングすることは非常に難しい問題です。したがって、ではなくにこの部分をプログラムすることをお勧めします。代わりに、スクリプトが古いデータ型のマッピングを各テーブルの新しいデータ型に出力するようにしてください。その後、SQLマネージャーに入り、SQLスクリプトを取得してそのテーブルを生成することができます。ほぼすべてのSQLデータベース管理ツールは、テーブルの作成スクリプトを生成できます。そのスクリプトを新しいデータ型で編集し、新しい名前を付けて実行します。
関連する問題