我正在尝试将我的数据从sybase迁移到monetdb。(或相反)为此我从sybase使用bcp并将其复制到monetdb中。
问题是monetdb中没有一些数据类型可用,例如datatime。为了解决这个问题,我可以在monetdb中定义一个函数,它将日期时间格式转换为monetdb特定格式。
但是当我尝试使用bulkcopy命令时,如何在特定列上调用此函数
COPY INTO TABLE from file using delimiters;
sybase中bcp的情况相同
编辑2: (我想我解决了我的问题,虽然原始问题仍然存在)我想从monetdb和sybase中的csv文件批量复制数据。 csv文件有一列带有unix时间戳(从1970年开始的秒数)。由于与人类可读日期时间(YYYY-MM-DD HH:MM:SS)格式相比,使用unix时间戳进行查询很困难,我想将该时间戳列转换为日期时间格式。)
我无法在批量复制时更改数据类型,但定义(使用)函数以人类可读格式转换时间戳。
--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';
答案 0 :(得分:1)
我不确定是否删除了monetdb,但在Sybase ASE中,您可以为表定义视图,以便将Sybase日期时间转换为所需的格式。创建视图后,您可以直接从视图中删除BCP,并且您的数据应该可以导入。
您可以将BCP转换为表格视图,并完成同样的事情。
有关视图的更多信息,请参见Sybase的Transact-SQL User's Guide