Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > Berkeley DB


Автор: ozy 3.6.2013, 06:42
Есть таблица:
запрос:
Код
root@test:cd /home/gamedbd && ./gamedbd gamesys.conf listfactionuser
rid,name,fid,cls,role,loyalty,nickname
32,"",1,7,2,0,""
34,"",2,3,2,0,""

прошу помочь импортировать эти данные в таблицу "user" базы "dboef" в mysql с выводом "name" и "nickname" в формате useUnicode, так как ответ на запрос в консоли выводит вместо них ""

Например, вывод из другой таблицы - файл importuser.jsp
Код

<%@page contentType="text/html; charset=GBK"%>
<%@page import="java.lang.*"%>
<%@page import="java.util.*"%>
<%@page import="java.text.*"%>
<%@page import="org.apache.commons.lang.StringEscapeUtils"%>
<%@page import="protocol.*"%>
<%@page import="com.goldhuman.auth.*"%>
<%@page import="org.apache.commons.logging.Log"%>
<%@page import="org.apache.commons.logging.LogFactory"%>
<%@page import="java.sql.*"%>
<%

      Connection connection = null;
      Class.forName("com.mysql.jdbc.Driver");

      connection = DriverManager.getConnection("jdbc:mysql://localhost/dboef", "XXXXXX", "YYYYYYYY");
        Statement statement = connection.createStatement();

        //
        //CLEAR user
        //
        String deleteall = "DELETE FROM user";
        statement.executeUpdate(deleteall);


        //
        //GET USER DB FIRST
        //
        ResultSet rst=null;
        rst = statement.executeQuery("select ID from users ORDER BY ID DESC");

        RoleBean role = null;
        String tempplayername = null;
        String command = null;
        int index = 0;
        int maxid = 0;
        int roleid = 31;
        int uid = 0;
        int eachacc = 0;
        while (rst.next())
        {
                maxid = Integer.parseInt(rst.getString("ID"));
                break;
        }

        while (roleid <= maxid)
        {
                roleid++;
                eachacc++;
                try
                {
                        if (eachacc < 16) // ADSLPREDATOR
                        {
                                role = GameDB.get( roleid );
                                session.setAttribute( "gamedb_rolebean", role );
                                if (null == role){
                                        continue;
                                }
                                else
                                {
                                        tempplayername = null;
                                        tempplayername = StringEscapeUtils.escapeHtml(role.base.name.getString());

                                        index = 0;
                                        index = tempplayername.indexOf("'");
                                        StringBuffer playername = new StringBuffer(tempplayername);
                                        if(index > 0){
                                                playername.replace(index, index + 1, "?");
                                        }

                                        command = "INSERT INTO user (roleid, rolename, rolelevel, rolestatus, rolegender, rolecultivation, rolemoney, rolerace, roleprof, rolerep, redname, rednametime, pinknametime, roletimeused, rolehp, rolemp, rolebankmoney, exp) VALUES ("+roleid+", '"+playername+"', " + role.status.level + ", '" + role.base.status + "', '" + role.base.gender + "', '" + role.status.level2 + "', '" + role.pocket.money + "', '" + role.base.race + "', '" + role.base.cls + "', '" + role.status.reputation + "', '" + role.status.invader_state + "', '" + role.status.invader_time + "', '" + role.status.pariah_time + "', '" + role.status.time_used + "', '" + role.status.hp + "', '" + role.status.mp + "', '" + role.storehouse.money + "', '" + role.status.exp + "')";
                                        statement.executeUpdate(command);
                                        out.println("<br>--100% stored RoleDB: Name:" + tempplayername + " Roleid:" + roleid + " Level:" + role.status.level);
                                        //out.println(command);
                                }
                        }
                        else if (eachacc == 16) // ADSLPREDATOR
                                eachacc = 0;
                        else
                                continue;
                }
                catch (Exception e)
                {
                        continue;
                }
        }

%>


Автор: ozy 4.6.2013, 11:49
Пожалуйста помогите smile 
Искала информацию в инете, обратилась на несколько форумов за помощью.
Безрезультатно.
Максимум могу заплатить 30 WMZ( аванс 10, остальное после проверки работоспособности скрипта)

Автор: Akina 4.6.2013, 12:11
У Вас в образце данных на месте требуемых параметров стоят пустые строки... откуда, спрашивается, взяться данным? ветром надует, что ли?
Добейтесь правильного ВЫВОДА исходных данных из места хранения.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)