Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8. / 21 сообщений из 21, страница 1 из 1
29.03.2015, 12:00
    #38920283
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8.
Всем привет. Надеюсь у вас все хорошо.
Не сочтите офтопом; думаю, именно в этом форуме мне помогут т.к. без Java с задачей наверно не справиться.
Суть:
- необходимо выгрузить в заранее определенную структуру папок на удаленной от СУБД машине данные из MS SQL 2008 в плоский файл с не самой просто структурой в кодировке UTF-8.
- в одной выгрузке порядка десятка файлов
- размер каждого файла 0,5 Гб.
- данные необходимо выгружаться по расписанию или после того как сформируются таблицы

Сначала думала обойтись средствами MS SQL для выгрузки данных (на Oracle с пакетом utl_file проблем не возникало), но получить нужную кодировку мне не удалось (SQL Server does not support code page 65001 (UTF-8 encoding))

После начала смотреть в сторону Spring Batch, но нет уверенности в том что это именно то, что необходимо для решение выше описанной задачи.

Посоветуйте как таки выгрузить данные в кодировке UTF-8? Быстрота реализации и гибкость решения приветствуется =))
...
Рейтинг: 0 / 0
30.03.2015, 11:43
    #38920906
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8.
Blazkowicz, молю, появись. =)
...
Рейтинг: 0 / 0
30.03.2015, 12:03
    #38920957
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8.
Не очень понятно в чем именно проблема. Ну, читай себе через JDBC, да добавляй в файл.
В Spring Batch на глагне весь список фич. Сложно понять нужны они здесь или нет.
По поводу SQL Server, можно, вероятно в UTF-16 выгрузить. А потом при острой необходимости сконвертировать в UTF-8.
...
Рейтинг: 0 / 0
30.03.2015, 12:36
    #38921013
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8.
Спасибо что откликнулся.
авторв чем именно проблема.
Проблема в том, что SQL server не пишет файлы в UTF-8.
авторНу, читай себе через JDBC, да добавляй в файл.
Это понятно.
Код: plaintext
В Spring Batch на глагне весь список фич.
в упячке посмотреть??? не поняла.
Код: plaintext
По поводу SQL Server, можно, вероятно в UTF-16 выгрузить. А потом при острой необходимости сконвертировать в UTF-8.
хочется все в одном флаконе и сразу.
...
Рейтинг: 0 / 0
30.03.2015, 12:47
    #38921033
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8.
May12Проблема в том, что SQL server не пишет файлы в UTF-8.

А откуда такое строгое требование в UTF-8?

May12в упячке посмотреть??? не поняла.
http://projects.spring.io/spring-batch/

May12хочется все в одном флаконе и сразу.
http://www.memecenter.com/fun/914998/woman
Может таки чего-то конкретного?
...
Рейтинг: 0 / 0
31.03.2015, 15:18
    #38922643
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8.
авторА откуда такое строгое требование в UTF-8?
от потребителя файлов.
автор http://projects.spring.io/spring-batch/
читала. В общем стало понятно, что это не совсем то, что надо. Моя цепочка действий не требует длинных цепочек джобов для которых придуман Spring Batch.
автор http://www.memecenter.com/fun/914998/woman

=))

авторМожет таки чего-то конкретного?
Решено обойтись Spring Data'ой (да, да, это не альтернатива spring-batch, я знаю).

Сейчас уперлась в NullPointerException при вызове класса, который реализует интерфейс. Думаю, что я вас еще побеспокою по этому поводу.
...
Рейтинг: 0 / 0
31.03.2015, 15:26
    #38922672
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8.
May12,

Spring Data, которая обертка для JPA? А от неё какая тут польза?
...
Рейтинг: 0 / 0
31.03.2015, 15:35
    #38922695
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8.
Blazkowicz, да. Это тренд, типа ;) самой смищно. хотя надо было просто Hibernate прикрутить и всё.
...
Рейтинг: 0 / 0
31.03.2015, 15:36
    #38922699
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8.
А Hibernate зачем? Много джоинов?
...
Рейтинг: 0 / 0
31.03.2015, 15:43
    #38922722
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8.
Blazkowicz, =(( нет, все джойны в базе. =(
...
Рейтинг: 0 / 0
31.03.2015, 16:58
    #38922917
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8.
Blazkowicz, а вы может помочь немного... еще немного =))
Я почитала вот это http://devcolibri.com/3966 и воодушевилась и решила прокачать скил!!! Вот что получилось:

Код: java
1.
2.
3.
4.
5.
6.
 public static void main( String[] args )
    {
     	LOG.info("this is a sample log message.");
     	ExtractServiceImpl ex = new ExtractServiceImpl();
     	ex.getByID(8).getComment();
      }



Мне вываливается исключение:

Код: plaintext
1.
2.
Exception in thread "main" java.lang.NullPointerException
	at ru.maya.data.service.impl.ExtractServiceImpl.getByID(ExtractServiceImpl.java:28)
	at ru.maya.mayaapp.App.main(App.java:36)

Вот класс, который реализует интерфейс ExtractService

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
	@Service
public class ExtractServiceImpl implements ExtractService {

	private static final Logger LOG = Logger.getLogger(ExtractServiceImpl.class.getName());
	
	 @Autowired  //  — это аннотация которая позволит Spring инициализировать наш сервис;
	 private ExtractRepository extractRepository;  	//- объявление нашего сервиса (это интерфейс, а не реализация), который позволит нам использовать его бизнес-логику;
	 
	 
	 @Override
	 public Extract getByID(long id) {
		 LOG.info("В метод getByID пришло " + id);
		          return extractRepository.getByID(id);
	    }  
	 
	 @Override
	    public List<Extract> getAll() {
	        return (List<Extract>) extractRepository.getAll();
	    }
	 
}



Вот сам интерфейс:

Код: java
1.
2.
3.
4.
public interface ExtractService {
    Extract getByID(long id);
    List<Extract> getAll();
}



Моя проблема в том, что я не понимаю как это работает почему NullPointerException(?) По идее приложение должно слазить в базу (MS SQL) и получить комментарий getComment().

Интерфейс ExtractRepository выглядит так вот:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public interface ExtractRepository extends JpaRepository<Extract, Long>  {

    @Query("select ext from maya_extract ext where ext.ID = :id")
    Extract getByID(@Param("id") long id);

    @Query("select ext from maya_extract ext")
    Extract getAll ();
}
...
Рейтинг: 0 / 0
01.04.2015, 09:31
    #38923349
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8.
May12Моя проблема в том, что я не понимаю как это работает почему NullPointerException(?)
Потому что нужен IoC контейнер который назначит значения полям. Сами по себе значения в полях не появятся.
...
Рейтинг: 0 / 0
01.04.2015, 11:09
    #38923540
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8.
Blazkowicz,
Код: plaintext
IoC, DI — очень хороший инструмент, но и как любой другой механизм использовать его нужно  осознанно  и к месту. 
Мною не осознано и поэтому не понимаю к месту ли он. =(
...
Рейтинг: 0 / 0
01.04.2015, 11:28
    #38923572
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8.
May12
Код: plaintext
IoC, DI — очень хороший инструмент, но и как любой другой механизм использовать его нужно  осознанно  и к месту. 

Хабр очень слабый ресурс в вопросах изучения программирования.

May12Мною не осознано и поэтому не понимаю к месту ли он. =(
Тогда зачем вы пытаетесь использовать 100500 фреймверков, запуская код, который не понимаете и не зная что такое NPE и откуда берется?

Это же ваш код:
Код: java
1.
2.
@Autowired 
private ExtractRepository extractRepository;


Не используйте код, который не понимаете. Пишите для начала код, который понимаете.
...
Рейтинг: 0 / 0
01.04.2015, 13:19
    #38923764
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8.
May12Blazkowicz,
Код: plaintext
IoC, DI — очень хороший инструмент, но и как любой другой механизм использовать его нужно  осознанно  и к месту. 
Мною не осознано и поэтому не понимаю к месту ли он. =(

К месту.
Spring это не только фреймворк, но и куча синтаксического сахара.
А так, помню тоже долго мучился со Spring-data, проблема решилась откатом на предыдущую версию.
Т.е. один и тот же код работал в старой и не работал в новой.
Так что сравните версии Spring и его расширения в вашем приложении и примере.
...
Рейтинг: 0 / 0
01.04.2015, 13:35
    #38923782
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8.
mad_nazgulSpring это не только фреймворк, но и куча синтаксического сахара.

Что-то не то вы называете синтаксическим сахаром. Него его в Spring.

mad_nazgulТак что сравните версии Spring и его расширения в вашем приложении и примере.
Код посмотрите. Там метод main и спринговым контекстом вообще не пахнет. При чем тут версии?
...
Рейтинг: 0 / 0
01.04.2015, 13:37
    #38923788
ferc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8.
May12,
ну так берите ваш сервис из контейнера спринга, а не
Код: java
1.
ExtractServiceImpl ex = new ExtractServiceImpl();
...
Рейтинг: 0 / 0
01.04.2015, 23:24
    #38924337
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8.
Это. Мягко выражаясь.
Нафига тут Spring Batch и Hibernate. Одно - экзотика, другое часто применяют когда лень изучать основы SQL и JDBC. Но культурному человеку их знать надо.
В данном примере как раз и надо применить JDBC. Получится простая программа в десятки строк. Нет никакой проблемы в чтении данных в UTF-16 и записи в UTF-8. Я правда не пользуюсь MS SQL Server-ом, но суть у них всех одна (пользуюсь Oracle). Для подробностей могут иметь значение:
- тип данных колонки, которую надо читать: nvarchar, image (что в переводе на русский язык означает BLOB), ещё какой
- кодировку базы.
При чтении из базы и записи в файлы для культурности не следует помещать весь объект (500 МБ) в память, можно читать по частям и сразу записывать в файл.
...
Рейтинг: 0 / 0
01.04.2015, 23:57
    #38924352
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8.
Вот, сам проверил. Пришлось для этого установить MS SQL Server Express 2014, русифицированный. Выбрал русскую кодировку базы (по умолчанию) и тип nvarchar(MAX) для текста. Всё читается по-русски через JDBC. (Для типа image понадобится небольшое изменение программы).
...
Рейтинг: 0 / 0
02.04.2015, 09:57
    #38924535
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8.
Partisan M,
она просто решила "прокачать скилл"). Она же написала.
...
Рейтинг: 0 / 0
08.04.2015, 14:07
    #38930500
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8.
авторкак раз и надо применить JDBC.
Так и сделала. Извините, что не участвовала в дискуссии. С кодировками все тоже нормально. Пока.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Выгрузка дынных из MS SQL 2008 в файл с кодировкой UTF-8. / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]