1

我正在尝试将我的数据从 sybase 迁移到 monetdb。(或相反)为此我从 sybase 使用 bcp 并复制到 monetdb 中。

问题是某些数据类型在 monetdb 中不可用,例如 datatime。为了解决这个问题,我可以在 monetdb 中定义一个函数,它将日期时间格式转换为 monetdb 特定格式。

但是当我尝试批量复制命令时如何在特定列上调用此函数

使用分隔符从文件中复制到表中;

sybase 中 bcp 的情况相同

编辑 2:(我想我解决了我的问题,虽然原始问题仍然存在)我想从 monetdb 和 sybase 中的 csv 文件批量复制数据。csv 文件有一列带有 unix 时间戳(从 1970 年开始的秒数)。由于与人类可读的日期时间(YYYY-MM-DD HH:MM:SS)格式相比,使用 unix 时间戳进行查询比较困难,因此我想将该时间戳列转换为日期时间格式)。

我无法在批量复制时更改数据类型,但定义(使用)函数将时间戳转换为人类可读格式。

-- 对于 Sybase 使用的 dateadd 函数:
select * from gaurav.table where dateadd(ss,t_stamp,'1/1/1970') '2013-02-27 (小于号) 10:17:29.463114';
--Monetdb 定义了一个函数:
create function "epoch"(sec INT) 返回 TIMESTAMP 外部名称 timestamp."epoch";
select * from gaurav.table where epoch(t_stamp) (小于号) '2013-02-27 10:17:29.463114';
4

1 回答 1

1

我不确定 monetdb,但在 Sybase ASE 中,您可以为表定义视图,将 Sybase 日期时间转换为您需要的格式。创建视图后,您可以直接从视图中进行 BCP,并且您的数据应该已准备好导入。

您也许可以将 BCP 转换为表视图,并完成同样的事情。

有关视图的更多信息,请参见 Sybase 的Transact-SQL 用户指南

于 2013-02-27T15:21:26.240 回答