|
|
|
|
#1 |
|
Участник
|
Цитата:
Сообщение от novic
Как-то на проекте переносили данные прямым запросом.
Не так ужасно -) И очень быстро -)) X++: SOURCE #RHRMImportCalendarDate
#static void RHRMImportCalendarDate(Args _args)
#{
# ODBCConnection odbcConnection;
# Statement statement;
# str sqlQueryString;
# SqlStatementExecutePermission permission;
# ResultSet resultSet;
# LoginProperty loginProperty;
# str serverName = "SUPER";
# //str dataBaseName = "BA
# str dataBaseName = "DT";
# DataAreaId dataAreaId;
# int counter;
#
# void import()
# {
# RPayCalendarDate rpayCalendarDate;
# ;
#
# rpayCalendarDate.clear();
# rpayCalendarDate.TransDate = resultSet.getDate(1);
# rpayCalendarDate.CalendarId = resultSet.getString(2);
# rpayCalendarDate.PayDayType = resultSet.getInt(3);
#
# if(!RPayCalendarDate::exist(rpayCalendarDate.CalendarId, rpayCalendarDate.TransDate))
# {
# rpayCalendarDate.doInsert();
# }
#
#
# counter++;
# }
# ;
#
# try
# {
# loginProperty = new LoginProperty();
# loginProperty.setServer(serverName);
# loginProperty.setDatabase(dataBaseName);
#
# odbcConnection = new ODBCConnection(loginProperty);
#
# if (!odbcConnection)
# {
# info("Ошибка при подключении к базе данных");
# }
# }
# catch (Exception::Internal)
# {
# info("Возникла ошибка при подключении к базе данных. Операция отменена.");
# }
# catch (Exception::Error)
# {
# info("Ошибка при подключении к базе данных!");
# }
#
# statement = odbcConnection.createStatement();
#
#
# sqlQueryString = strfmt("SELECT RPAYCALENDARDATE.TRANSDATE"//1
# + ", RPAYCALENDARDATE.CALENDARID"//2
# + ", RPAYCALENDARDATE.PAYDAYTYPE"//3
# + " FROM RPAYCALENDARDATE"
# + " WHERE RPAYCALENDARDATE.DATAAREAID = 'dat'"
# + " AND RPAYCALENDARDATE.TRANSDATE > '20091231'");
#
# permission = new SqlStatementExecutePermission(sqlQueryString);
# permission.assert();
# resultSet = statement.executeQuery(sqlQueryString);
#
# while (resultSet.next())
# {
# ttsbegin;
#
# import();
#
# ttscommit;
# }
#
# statement.close();
#
# info(strfmt("Импортировано %1", counter));
#}
ENDSOURCEЕсли всё-таки odbcConnection может быть null то пользователь увидит инфо, а потом стектрейс. И интересно кто закроет statement если что-то упадёт в execute или в while какой-нибудь дедлок или ещё что... Ну и counter показует количество прочитанных строк, а не вставленных. В худшем случае напишет что заимпортило 1000, а по факту в базу может попасть 0. Последний раз редактировалось skuull; 11.03.2015 в 12:59. |
|
|
|
|
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|