2013-02-27 1 views
1

Я пытаюсь перенести свои данные из sybase в monetdb. (Или наоборот) для этого я использую bcp из sybase и копирую в monetdb.bulk copy [copy into] Как заменить или изменить тип данных одного столбца (при массовом копировании) в файле monet db/sybase?

Проблема заключается в том, что некоторые типы данных недоступны в monetdb, например, в формате datatime. Чтобы решить эту проблему, я могу определить функцию в monetdb, которая поддерживает формат даты и времени в конкретном формате monetdb.

Но как вызвать эту функцию на определенном столбце, когда я пытаюсь команду bulkcopy

COPY INTO TABLE from file using delimiters;

Такая же ситуация БОП в Sybase

EDIT 2: (я предполагаю, что я решил мою проблему хотя исходный вопрос по-прежнему остается) Я хотел, чтобы скопировать данные из файла csv в monetdb и sybase. Файл csv имел один столбец с отметками времени unix (в секундах с 1970 года). Поскольку трудно запросить использование отметки времени unix по сравнению с форматом времени, доступным для чтения человеком (YYYY-MM-DD HH: MM: SS), я хотел бы преобразовать этот временной формат в формат даты до даты).

Я не мог изменить тип данных во время массовой копии, но определенные (используемые) функции для перевода метки времени в человекообразном формате.

 
--For Sybase used dateadd function : 
select * from gaurav.table where dateadd(ss,t_stamp,'1/1/1970') '2013-02-27 (less than sign) 10:17:29.463114'; 
 
--For Monetdb defined a function : 
create function "epoch"(sec INT) returns TIMESTAMP external name timestamp."epoch"; 
select * from gaurav.table where epoch(t_stamp) (less than sign) '2013-02-27 10:17:29.463114'; 

ответ

1

Я не уверен, аб из monetdb, но в Sybase ASE вы можете определить виды для таблиц, которые преобразовывают DateTime Sybase в нужный вам формат. После создания представления вы можете просто BCP непосредственно из представления, и ваши данные должны быть готовы для вашего импорта.

Возможно, вы сможете использовать BCP в виде таблицы и выполнять то же самое.

Более подробную информацию о мнениях можно найти в Sybase в Transact-SQL User's Guide

+0

Спасибо за ответ, я имел таблицу текстовый с Отметка времени Unix, я загрузил его в Sybase с ППГ, а затем был в состоянии запросить данные с машиночитаемых датами человека с select * from gaurav.table, где dateadd (ss, t_stamp, '1/1/1970') <'2013-02-27 10: 17: 29.463114' .... но могу ли я просто преобразовать временную метку unix в формат даты и времени во время bcp – Gaurav

+1

bcp не позволяет изменять данные, но вы можете иметь BCP в виде таблицы и преобразовывать данные таким образом. –

+0

Да, я думал, что я могу изменить исходные данные из файла csv с помощью таких инструментов linux, как sed или awk, чтобы изменить данные до bcp или использовать пользовательские представления, как вы упомянули. – Gaurav

Смежные вопросы