поиск результатов по столбцу

У меня есть проблема с набором результатов из большой базы данных. (MySQLDB, Java 1.7)

Задача состоит в том, чтобы выполнить преобразование всех записей одного столбца в другую базу данных. (например, разделите каждое число на три и запишите их в другую базу данных)

Поскольку база данных содержит около 70 столбцов и несколько миллионов строк, моим первым подходом было бы получить SELECT * и проанализировать набор результатов по столбцам.

К сожалению, я не нашел способа разобрать его таким образом, поскольку назначенный способ намеревается пройти через него по строкам (while (rs.next ()) {} и т. Д.).

Мне это не нравится, поскольку это создало бы 70 больших массивов, у меня было бы только одно время, чтобы уменьшить использование памяти.

Итак, вот мои основные вопросы:

  1. Есть ли способ?
  2. Должен ли я создавать запрос для каждого столбца и анализировать их (один массив за раз, но 70 запросов) или
  3. Должен ли я просто получить весь ResultSet и разобрать его по строкам, записав их в 70 массивов?

Приветствуем и благодарим заранее!

0
nl ja de
Вы действительно имеете в виду другую базу данных или просто другую таблицу ?
добавлено автор jlordo, источник
это очень актуально, потому что, если это просто другая таблица, вы можете использовать базу данных для выполнения задания. Это будет очень эффективно, и вам не нужен какой-либо код java вообще (за исключением того, что вы хотите, чтобы Java выполнял операторы sql).
добавлено автор jlordo, источник
это актуально? но вы правы, это, по сути, просто еще одна таблица
добавлено автор Maltram, источник

2 ответы

Почему не просто страница ваших запросов ? Вытягивайте строки «n» за раз, выполняйте преобразование, а затем записывайте их в новую базу данных.

Это означает, что вы не втягиваете все в один запрос/итерацию, а затем пишете всю партию за один раз, и у вас нет неэффективности работы по строкам.

Мой другой комментарий - возможно, это преждевременная оптимизация. Вы пытались загрузить весь набор данных и посмотреть, сколько памяти потребуется. Если это порядка 10 или даже 100 мегабайт, я бы ожидал, что JVM справится с этим легко.

Я предполагаю, что ваша трансформация должна быть выполнена на Java. Если вы можете сделать это в SQL, то сделать это полностью в базе данных, вероятно, будет еще более эффективным.

2
добавлено
Мой подход предполагает настраиваемое количество запросов. Если вы на странице, вы можете выбрать размер страницы (например, 500 строк?), Чтобы вы загружали заданный объем данных, а затем записывали каждый набор в одну пакетную операцию. Изменение размера страницы определяет: a) объем памяти, потребляемой за запрос; б) количество записей в db
добавлено автор Brian Agnew, источник
Меня не волновало размер набора результатов, а размер 70 массивов (который, как я полагаю, должен быть меньше, чем набор результатов). Но ваш подход предполагает много ошибок, что приводит к увеличению трафика. Прямо сейчас я не уверен, какой ресурс - шея бутылки (движение или память)
добавлено автор Maltram, источник

Почему бы вам не сделать это только с mysql.

используйте этот запрос:

create table <table_name> as select /3 from <table name>;
0
добавлено
Потому что «/ 3» был всего лишь примером, и преобразование намного сложнее ... Я думал об этом, но я не уверен, что это возможно. Я дам ему еще одну попытку, хотя
добавлено автор Maltram, источник
Хорошо ... Дайте нам знать, если вы все еще сталкиваетесь с какой-либо проблемой.
добавлено автор Sushil Jain, источник
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async