Я пытаюсь подготовить лист посещаемости с помощью excel и хотел бы сохранить файл в формате .csv, а затем связать его с mysql. Как я могу создать динамическое имя таблицы через программу jdbc. Любая помощь может быть принята с благодарностью.Динамическое создание имени таблицы в программе JDBC
ответ
Вы должны сгенерировать SQL путем «string bashing». Например:
String tableName = ...
String createTableSQL = "Create table " + tableName;
Statement statement = connection.createStatement(createTableSQL);
statememt.execute();
и так далее.
Предупреждение: с этим подходом существуют риски. В частности, если вы создаете имя таблицы на основе символьной строки, введенной пользователем или прочитанной из электронной таблицы или CSV или чего-то еще, они могут ввести строку, которая на самом деле является оператором SQL. Конечным результатом является то, что они могут обмануть вашу программу для выполнения вредоносного SQL в вашей базе данных.
Обычная защита от этого - использовать PreparedStatement и использовать заполнители для всех предоставленных пользователем деталей в SQL. К сожалению, это работает только для ввода значений SQL. Вы не можете сделать это с именем таблицы, именем столбца и другими вещами.
Вы можете написать .sql+shell
скрипт с mysql command-line-client
и mysql-dataloader
скелет должен идти, как это:
- Сформировать
.csv
файл с именемattendence_dd_mm_yyyy.csv
с помощью приложения. - 'Команда оболочки': создать имя_таблицы на основе некоторой логики (например,
attendence_dd_mm_yyyy
). - 'Команда Mysql': используйте
mysql -u usename -ppassword -e <Create table tablename> <fixed columns>
. - 'Data-loader': используйте
mysql -u usename -ppassword -e LOAD DATA INFILE ...
для загрузки csv в только что созданную таблицу.
Я знаю, что я немного не по теме, по-прежнему предлагая этот вариант, потому что
- данных погрузчик очень - очень быстро и легко доступны.
- Это решит проблему загрузки данных, которая должна быть выполнена после создания таблицы.
- Код приложения не обязательно указывать
DDL permission
. Проблемы могут возникнуть, если ваш код находится вinfinite loop
или что-то похожее. - Проблемы будут
propagate to DB
воздействовать на другие связанные приложения (если они есть). - Если ваш веб-приложение или аналогичный,
SQL-Injection
- этоHUGE CONCERN
для вашего подхода.
Если вы используете какую-либо другую базу данных, пожалуйста, работайте с аналогичными строками.
- 1. Динамическое создание таблицы представлений
- 2. Динамическое создание таблицы
- 3. Динамическое создание/заполнение таблицы
- 4. Динамическое создание таблицы в tsql
- 5. ClassNotFoundException в программе jdbc
- 6. java.lang.ClassNotFoundException в программе JDBC
- 7. Динамическое создание имени файла в SSRS 2008
- 8. Динамическое создание имени тега XML в xslt
- 9. Создание таблицы JDBC-MS-ACCESS
- 10. Создание таблицы с использованием mysql, jdbc
- 11. Динамическое создание таблицы из csv
- 12. Динамическое создание SQL таблицы из списка таблицы
- 13. Динамическое создание заголовка таблицы над заголовком таблицы
- 14. Динамическое создание таблицы внутри строки таблицы
- 15. Динамическое определение имени заданного имени таблицы в SQL-сервере
- 16. JSP EL: динамическое создание имени свойства
- 17. динамическое создание таблицы и кнопок в asp.net
- 18. Динамическое создание таблицы в SQL Server
- 19. динамическое создание строки таблицы в html/Javascript
- 20. Динамическое создание моделей для таблицы в рельсах
- 21. MySQL Сохраненная процедура динамическое изменение имени таблицы
- 22. Teradata JDBC Создание Volatile ошибки Таблицы 3585
- 23. упрощение запроса MySQL, динамическое вытягивание имени таблицы из данных таблицы
- 24. Динамическое создание HTML-таблицы с PHP
- 25. Динамическое создание таблицы с использованием Javascript
- 26. Динамическое создание CSS-селектора из таблицы Значение
- 27. Динамическое создание таблицы с помощью JavaScript
- 28. Postgres: Динамическое создание таблицы временных таблиц
- 29. Динамическое создание таблицы SQLite с определенными строками
- 30. Динамическое создание таблицы с использованием JavaScript
Попробуйте это для создания таблицы с использованием JDBC http://www.mkyong.com/jdbc/jdbc-statement-example-create-a-table/ – user75ponic
Я рекомендую пересмотреть вашу запланированную модель данных. Создание динамической таблицы для меня не кажется хорошей практикой, если для этой стратегии нет веских оснований. – LRA
@ LRA- Полностью согласен с вами. Но если это все еще необходимо, OP не должен использовать код приложения для этого. –