Scriptella - преобразование формата даты не работает

У меня возникла проблема с преобразованием формата даты при экспорте данных из MySQL в CSV. Я использую scriptelaa.1.1, последнюю версию.

Вот мой файл etl.properties:

driver=mysql
url=jdbc:mysql://localhost:3306/<my_DB_name>
user=<user_name>
password=<password>
classpath=/path/to/mysql-connector-java-5.1.19.jar;

вот мой файл etl.xml:

<!DOCTYPE etl SYSTEM "http://scriptella.javaforge.com/dtd/etl.dtd">
<etl>
    <description>Scriptella ETL File Template.</description>
    <properties>
        <include href="/path/to/etl.properties"/> <!--Load from external properties file-->
    </properties>
<!-- Connection declarations -->
<connection id="in" driver="${driver}" url="${url}" user="${user}" password="${password}" classpath="$classpath">
</connection>
<connection id="out" driver="csv" url="report.csv">
    #Use empty quote to turn off quoting
    quote=
    null_string=\\N
    format.dob.type=date
    format.dob.pattern=yyyy-MM-dd HH:mm:ss
</connection>
<query connection-id="in">
    SELECT * FROM test;
<script connection-id="out">
    $1,$2,$3,$4
    </script>
 </query>    
</etl>

dob — это имя моего столбца в таблице MySQL, это столбец типа datetime. Теперь, когда я экспортирую данные из MySQL, время приходит в формате yyyy-MM-dd HH:mm:ss.S Но я хочу yyyy-MM-dd HH:mm:ss< /strong>, поэтому я использовал

format.dob.type=date
format.dob.pattern=yyyy-MM-dd HH:mm:ss

Как предполагается, scriptella.1.1 имеет эту функцию и ее можно использовать по следующей ссылке: http://scriptella.javaforge.com/reference/index.html

Но это не работает. Может кто-нибудь мне помочь.

Спасибо. :)


person Mukesh S    schedule 23.08.2013    source источник


Ответы (1)


Правила форматирования применяются к имени переменной, поэтому одно и то же имя переменной должно использоваться как для описания формата, так и для заполнителя расширения. В вашем случае попробуйте использовать $dob вместо номера столбца.

person ejboy    schedule 24.08.2013
comment
я хотел бы спросить еще одну вещь, разделитель, который я использую, это «,», но когда я указываю это в параметре соединения, это не сработало. Так что, как видите, я должен конкретно указать идентификатор подключения к скрипту. Так есть ли способ решить это? - person Mukesh S; 26.08.2013
comment
У меня есть еще одно сомнение по поводу экспорта в БД из CSV. Скажем, я хочу обработать данные по столбцу в CSV, где и как я это сделаю? Это немного срочно. - person Mukesh S; 27.08.2013
comment
Параметр separator применяется только к входному или выходному файлу. Фактический запрос или сценарии всегда разделяются запятыми. Другими словами, для вашего случая вы можете изменить разделитель вывода на точку с запятой, но оставить запятые в скрипте. - person ejboy; 30.08.2013
comment
Пожалуйста, уточните, что такое data massaging? - person ejboy; 30.08.2013
comment
Скажем, во время импорта из MySQL в CSV я заменил ноль на '\N', теперь во время экспорта я хочу снова заменить '\N' на ноль, как это сделать? '\N' имеет значение null для Hive. - person Mukesh S; 04.09.2013