![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| kurmanov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 31.7.2011 Репутация: нет Всего: нет |
Всем здрасти! Народ у меня большая проблема! Есть определенная задача, которую я никак не могу решить. Может кто поможет? Задача моя заключается в следующем: необходимо создать модуль в котором выполняется выборка по определенным полям из одной таблицы (которая расположена в базе Oracle) и при нажатии на кнопку "Экспорт", происходит экспортирование данных в формат DBF. Выборка происходит на jsp странице, которая ссылается на java класс, где выполняется весь процесс выгрузки данных. В данный момент экспортирование работает, но возникает другая проблема, необходимо конвертировать кодировку таблицы из cp1251 в utf8. Я понятия не имею как это делается. Внизу я расписал три метода, которые выполняют выгрузку из таблицы расположенной в базе Oracle в таблицу DBF. Заранее очень благодарен!!! Листинг кода:
@GET @Path("/dbf/data/export/{id_form:\\d+}/{year:\\d\\d\\d\\d}/{month:\\d{1,2}}/") public Response outJsonFromCleared(@PathParam(value = "id_form") Integer idForm, @PathParam(value = "year") Integer year, @PathParam(value = "month") Integer month) throws NamingException, ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException { String currentTableName = "t" + String.valueOf(System.currentTimeMillis()); //Соединение с базами oracle & dbf SDataSessionBeanLocal sdatab = null; InitialContext ictx = null; ictx = new InitialContext(); sdatab = (SDataSessionBeanLocal) ictx.lookup(SDataSessionBeanLocal.LocalJNDIName); Class.forName("com.hxtt.sql.dbf.DBFDriver"); Connection conn = DriverManager.getConnection("jdbc:dbf:////" + getISSdataPath()); //Создание таблицы CreateTable(currentTableName); Collection<StatisticalDataInterface> data = sdatab.getDataRows(year, month, idForm); //----------------------------------- Session_SBLocal sbdata = null; sbdata = (Session_SBLocal) ictx.lookup(Session_SBLocal.LocalJNDIName); //------------------------------------------------------------------------------------------------------------------------------------- //Создание полей таблицы Iterator<StatisticalDataInterface> iterator = data.iterator(); StringBuilder builder = new StringBuilder(); JsonParser parser = new JsonParser(); //Вывод полей и полный адрес до rows ArrayList<Column> columns = GetDBFColumns(currentTableName); while (iterator.hasNext()) { StatisticalDataInterface dataInterface = iterator.next(); //-------------- RespondentClass resp = sbdata.GetRespondKTR(dataInterface.getBinIin(), dataInterface.getRyear().toString(), dataInterface.getRmonth().toString()); //-------------- JsonElement root = parser.parse(dataInterface.getFdata()); JsonElement obj = root.getAsJsonObject().getAsJsonObject("data").getAsJsonArray("parts").get(0).getAsJsonObject().getAsJsonArray("elements").get(0).getAsJsonObject().getAsJsonObject("value"); //Вывод элементов из объектов //*****--------------------------------------------------------------------- JsonElement rows = obj.getAsJsonObject().getAsJsonArray("rows"); //*****--------------------------------------------------------------------- Iterator<JsonElement> rowIterator = obj.getAsJsonObject().getAsJsonArray("rows").iterator(); //Начало вставки в dbf while (rowIterator.hasNext()) { String sql = "insert into " + currentTableName + "("; for (int j = 0; j < columns.size(); j++) { sql += columns.get(j).getColumnName() + (j == columns.size() - 1 ? ")" : ","); } JsonElement rowElement = rowIterator.next(); //Проверяется условие, если te и okpo не равен нулю, то выполняются действия String te = ""; String okpo = ""; if (resp != null) { te = resp.TE != null ? resp.TE : ""; okpo = resp.OKPO != null ? resp.OKPO : ""; } //----- //Вывод данных из таблицы String bin = dataInterface.getBinIin() != null ? dataInterface.getBinIin() : ""; String year1 = dataInterface.getRyear().toString(); String month1 = dataInterface.getRmonth().toString(); //Вывод данных из json по idx String idx1 = rowElement.getAsJsonObject().getAsJsonObject("props").getAsJsonPrimitive("idx").toString(); //Вставка values всех полей sql += " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; PreparedStatement prstat = conn.prepareStatement(sql); int size = rowElement.getAsJsonObject().getAsJsonArray("cells").size(); //Вывод данных из json и разложение по cells в цикле //Разложение и вставка JSON объектов-------------------------------------------------------------------------------------------------------------------- JsonElement larr = rowElement.getAsJsonObject().getAsJsonArray("cells").get(0); String gra = (larr.getAsJsonObject() != null && larr.getAsJsonObject().getAsJsonPrimitive("value") != null ? larr.getAsJsonObject().getAsJsonPrimitive("value").toString() : ""); JsonElement larr1 = rowElement.getAsJsonObject().getAsJsonArray("cells").get(1); String kodGra1 = (larr1.getAsJsonObject() != null && larr1.getAsJsonObject().getAsJsonPrimitive("value") != null ? larr1.getAsJsonObject().getAsJsonPrimitive("value").toString() : ""); JsonElement larr2 = rowElement.getAsJsonObject().getAsJsonArray("cells").get(2); String gr1gra2 = (larr2.getAsJsonObject() != null && larr2.getAsJsonObject().getAsJsonPrimitive("value") != null ? larr2.getAsJsonObject().getAsJsonPrimitive("value").toString() : ""); JsonElement larr4 = rowElement.getAsJsonObject().getAsJsonArray("cells").get(4); String gr3gra4 = (larr4.getAsJsonObject() != null && larr4.getAsJsonObject().getAsJsonPrimitive("value") != null ? larr4.getAsJsonObject().getAsJsonPrimitive("value").toString() : ""); JsonElement larr6 = rowElement.getAsJsonObject().getAsJsonArray("cells").get(6); String gr5gra6 = (larr6.getAsJsonObject() != null && larr6.getAsJsonObject().getAsJsonPrimitive("value") != null ? larr6.getAsJsonObject().getAsJsonPrimitive("value").toString() : ""); JsonElement larr8 = rowElement.getAsJsonObject().getAsJsonArray("cells").get(8); String gr7gra8 = (larr8.getAsJsonObject() != null && larr8.getAsJsonObject().getAsJsonPrimitive("value") != null ? larr8.getAsJsonObject().getAsJsonPrimitive("value").toString() : ""); JsonElement larr10 = rowElement.getAsJsonObject().getAsJsonArray("cells").get(10); String gr9gra10 = (larr10.getAsJsonObject() != null && larr10.getAsJsonObject().getAsJsonPrimitive("value") != null ? larr10.getAsJsonObject().getAsJsonPrimitive("value").toString() : ""); JsonElement larr11 = rowElement.getAsJsonObject().getAsJsonArray("cells").get(11); String gr10gra11 = (larr11.getAsJsonObject() != null && larr11.getAsJsonObject().getAsJsonPrimitive("value") != null ? larr11.getAsJsonObject().getAsJsonPrimitive("value").toString() : ""); JsonElement larr12 = rowElement.getAsJsonObject().getAsJsonArray("cells").get(12); String gr11gra12 = (larr12.getAsJsonObject() != null && larr12.getAsJsonObject().getAsJsonPrimitive("value") != null ? larr12.getAsJsonObject().getAsJsonPrimitive("value").toString() : ""); JsonElement larr13 = rowElement.getAsJsonObject().getAsJsonArray("cells").get(13); String gr12gra13 = (larr13.getAsJsonObject() != null && larr13.getAsJsonObject().getAsJsonPrimitive("value") != null ? larr13.getAsJsonObject().getAsJsonPrimitive("value").toString() : ""); JsonElement larr14 = rowElement.getAsJsonObject().getAsJsonArray("cells").get(14); String gr13gra14 = (larr14.getAsJsonObject() != null && larr14.getAsJsonObject().getAsJsonPrimitive("value") != null ? larr14.getAsJsonObject().getAsJsonPrimitive("value").toString() : ""); JsonElement larr15 = rowElement.getAsJsonObject().getAsJsonArray("cells").get(15); String gr14gra15 = (larr15.getAsJsonObject() != null && larr15.getAsJsonObject().getAsJsonPrimitive("value") != null ? larr15.getAsJsonObject().getAsJsonPrimitive("value").toString() : ""); JsonElement larr16 = rowElement.getAsJsonObject().getAsJsonArray("cells").get(16); String gr15gra16 = (larr16.getAsJsonObject() != null && larr16.getAsJsonObject().getAsJsonPrimitive("value") != null ? larr16.getAsJsonObject().getAsJsonPrimitive("value").toString() : ""); JsonElement larr17 = rowElement.getAsJsonObject().getAsJsonArray("cells").get(17); String gr16gra17 = (larr17.getAsJsonObject() != null && larr17.getAsJsonObject().getAsJsonPrimitive("value") != null ? larr17.getAsJsonObject().getAsJsonPrimitive("value").toString() : ""); JsonElement larr18 = rowElement.getAsJsonObject().getAsJsonArray("cells").get(18); String gr17gra18 = (larr18.getAsJsonObject() != null && larr18.getAsJsonObject().getAsJsonPrimitive("value") != null ? larr18.getAsJsonObject().getAsJsonPrimitive("value").toString() : ""); JsonElement larr19 = rowElement.getAsJsonObject().getAsJsonArray("cells").get(19); String gr18gra19 = (larr19.getAsJsonObject() != null && larr19.getAsJsonObject().getAsJsonPrimitive("value") != null ? larr19.getAsJsonObject().getAsJsonPrimitive("value").toString() : ""); JsonElement larr20 = rowElement.getAsJsonObject().getAsJsonArray("cells").get(20); String gr19gra20 = (larr20.getAsJsonObject() != null && larr20.getAsJsonObject().getAsJsonPrimitive("value") != null ? larr20.getAsJsonObject().getAsJsonPrimitive("value").toString() : ""); JsonElement larr21 = rowElement.getAsJsonObject().getAsJsonArray("cells").get(21); String gr20gra21 = (larr21.getAsJsonObject() != null && larr21.getAsJsonObject().getAsJsonPrimitive("value") != null ? larr21.getAsJsonObject().getAsJsonPrimitive("value").toString() : ""); JsonElement larr22 = rowElement.getAsJsonObject().getAsJsonArray("cells").get(22); String gr21gra22 = (larr22.getAsJsonObject() != null && larr22.getAsJsonObject().getAsJsonPrimitive("value") != null ? larr22.getAsJsonObject().getAsJsonPrimitive("value").toString() : ""); String pr = ""; prstat.setString(1, dataInterface.getBinIin() != null ? dataInterface.getBinIin() : ""); prstat.setInt(2, dataInterface.getRyear().intValue()); prstat.setInt(3, dataInterface.getRmonth().intValue()); prstat.setString(4, kodGra1.replaceAll("\"", "")); prstat.setString(5, gr1gra2.replaceAll("\"", "")); prstat.setString(6, gr3gra4.replaceAll("\"", "")); prstat.setString(7, gr5gra6.replaceAll("\"", "")); prstat.setString(8, gr7gra8.replaceAll("\"", "")); prstat.setString(9, gr9gra10.replaceAll("\"", "")); prstat.setString(10, gr10gra11.replaceAll("\"", "")); prstat.setString(11, gr11gra12.replaceAll("\"", "")); String gra12st = gr12gra13.replaceAll("\"", "").replace(',', '.'); prstat.setString(12, gra12st); prstat.setString(13, gr13gra14.replaceAll("\"", "")); prstat.setString(14, gr14gra15.replaceAll("\"", "")); prstat.setString(15, gr15gra16.replaceAll("\"", "").replace(',', '.')); prstat.setString(16, gr16gra17.replaceAll("\"", "").replace(',', '.')); prstat.setString(17, gr17gra18.replaceAll("\"", "").replace(',', '.')); prstat.setString(18, gr18gra19.replaceAll("\"", "")); prstat.setString(19, gr19gra20.replaceAll("\"", "")); prstat.setString(20, gr20gra21.replaceAll("\"", "")); prstat.setString(21, gr21gra22.replaceAll("\"", "")); prstat.setString(22, pr); prstat.setString(23, te.replaceAll("\"", "")); prstat.setString(24, okpo.replaceAll("\"", "")); prstat.executeUpdate(); } } parser = null; String fileName = getISSdataPath() + File.separatorChar + currentTableName + ".DBF"; File file = new File(fileName); try { FileInputStream fileInputStream = new FileInputStream(file); byte[] buffer = new byte[Long.valueOf(file.length()).intValue()]; fileInputStream.read(buffer); fileInputStream.close(); ResponseBuilder responseBuilder = new ResponseBuilderImpl(); responseBuilder.type("application/dbf"); responseBuilder.header("Content-Disposition", "attachment; filename=\"" + currentTableName + ".DBF\""); responseBuilder.entity(buffer); System.getProperties().list(System.out); return responseBuilder.build(); } catch (FileNotFoundException fileNotFoundException) { ISSdataLogger.logEvent(Level.SEVERE, this.getClass(), "DataConverter", fileNotFoundException); } catch (IOException iOException) { ISSdataLogger.logEvent(Level.SEVERE, this.getClass(), "DataConverter", iOException); } return null; } //----------------------------------------------------------------------------- private ArrayList<Column> GetDBFColumns(String tableName) throws ClassNotFoundException, SQLException { Class.forName("com.hxtt.sql.dbf.DBFDriver"); //Connection conn = DriverManager.getConnection(paths); Connection conn = DriverManager.getConnection("jdbc:dbf:////" + getISSdataPath()); Statement st = conn.createStatement(); ResultSet res = st.executeQuery("select * from " + tableName); ResultSetMetaData meta = res.getMetaData(); int columnCount = meta.getColumnCount(); ArrayList<Column> columns = new ArrayList<Column>(); Column column = null; for (int i = 1; i <= columnCount; i++) { column = new Column(); column.setColumnName(meta.getColumnName(i)); column.setColumnType(meta.getColumnTypeName(i)); column.setColumnSize(meta.getColumnDisplaySize(i)); columns.add(column); } conn.close(); st.close(); return columns; } private void CreateTable(String tableName) throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException { Class.forName("com.hxtt.sql.dbf.DBFDriver"); //Connection conn = DriverManager.getConnection(paths); Connection conn = DriverManager.getConnection("jdbc:dbf:////" + getISSdataPath()); Statement st = conn.createStatement(); try { String sql = "create table " + tableName + " (BIN_IIN varchar(12), God numeric(4,0), Mes numeric(2,0), KOD varchar(10), GR1 varchar(3), GR3 varchar(3), GR5 varchar(3), GR7 varchar(3), GR9 varchar(3), GR10 varchar(3), GR11 varchar(3), GR12 numeric(12,3), GR13 varchar(3), GR14 numeric(14,0), GR15 numeric(14,1), GR16 numeric(14,1), GR17 numeric(14,1), GR18 varchar(3), GR19 varchar(10), GR20 varchar(1), GR21 varchar(1), Pr varchar(3), TE varchar(9), OKPO varchar(12))"; st.executeUpdate(sql); } catch (SQLException e) { ISSdataLogger.logEvent(Level.SEVERE, this.getClass(), "DataConverter", e); } finally { conn.close(); st.close(); } } |
|||
|
||||
| vinni5898 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 2.8.2011 Репутация: нет Всего: нет |
DBF Commander Professional умеет конвертировать в UTF-8 и обратно (в ANSI). Также есть поддержка командной строки. Можете как-то так попробовать прикрутить.
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |