2016-07-14 4 views
0

У меня есть место, где я храню столы. В этом месте у меня есть стол. Lets 'name it Table A. Все столбцы в столбцах таблицы A являются varchars. Я хочу создать процесс, который будет проходить через каждую таблицу и создать новую таблицу в другом месте базы данных. Однако эта таблица должна иметь правильные типы данных вместо varchars. Итак, если мой столбец в таблице A является столбцом со значениями 1234, я хочу создать поле, которое будет INT, а не varchar.Java Копирование таблиц в другую схему

Я не знаю, как это сделать в java. Может кто-нибудь мне точку в правильном направлении на то, что вещи, которые я должен был бы узнать, и если это слишком сложно

Благодаря

+0

Посмотрите на табличные модели. Вы просто скопируете сама таблицу, содержащую всю эту информацию. Затем jTable читает таблицу. –

+0

1. Я предполагаю, что вы используете СУБД, и ваше приложение Java подключено к нему. Какие СУБД вы используете (MySQL, SQL-Server, PostgreSQL, ...)? 2. Знаете ли вы правильные типы данных для новых таблиц? Или вам нужно вывести их на основе содержимого таблицы? – Barranka

+0

Я использую MYSQL. Я не знаю новых типов данных. Я должен вывести их на основе содержимого таблицы. – Will

ответ

0

Как я понимаю, ваша проблема имеет несколько частей:

  1. EASY - получение существующей информации таблицы. Вам нужно будет получить DatabaseMetaData из вашего соединения jdbc. Документация по этому классу - here, а Google - ваш друг в том, как получить этот объект в первую очередь. (Подсказка: this question должен достать вам большую часть пути)

  2. MEDIUM - Выясните, какой тип данных ваши данные на самом деле. Если вы попытаетесь сузить его до нескольких простых типов, таких как Integer, String и даты, на самом деле это не так сложно. Вам просто нужно выбрать несколько строк для каждого столбца (где этот столбец не является нулевым), а затем попытаться разобрать его на разные типы. Если это удастся, возможно, это тот тип. Если он выбрасывает исключение, то это не так. Integer.parseInt(), LocalDateTimeFormatter и т. Д. - это то, что вы будете использовать.

Если вы хотите получить таблицу метаданных, а затем просто сделать «SELECT * FROM TABLE <>» и ResultSetMetaData будет иметь всю информацию, которую вы должны будете продолжать идти.

  1. VERY HARD - Создание таблиц с использованием новых подходящих типов данных. Это сложно не из-за того, что было упомянуто до сих пор, а потому, что мы еще не говорили о внешних ключах, индексах и всех других хороших вещах. Сопоставление всех этих программ программно будет очень сложной проблемой. Поэтому я рекомендую NOT, пытаясь запрограммировать эту часть. Вместо этого, ваш скрипт выводит сопоставление старых типов данных с новыми типами данных для каждой таблицы. Затем вы можете войти в свой SQL-менеджер и получить скрипт SQL для создания этой таблицы. Практически каждый инструмент управления базами данных SQL может генерировать сценарий создания таблицы. Отредактируйте этот скрипт с новыми типами данных, дайте ему новое имя и запустите его.
Смежные вопросы