1

データを sybase から monetdb に移行しようとしています (またはその逆)。このために、sybase から bcp を使用して monetdb にコピーしています。

問題は、datatime などの一部のデータ型が monetdb で使用できないことです。この問題を解決するために、日時形式を monetdb 固有の形式に変換する関数を monetdb で定義できます。

しかし、bulkcopyコマンドを試しているときに特定の列でこの関数を呼び出す方法

区切り文字を使用してファイルから COPY INTO TABLE;

sybase の bcp と同じ状況

編集 2: (元の質問はまだ残っていますが、問題を解決したと思います) monetdb と sybase の両方で csv ファイルからデータを一括コピーしたかったのです。csv ファイルには、UNIX タイムスタンプ (1970 年からの秒数) を含む 1 つの列がありました。人間が読める日付時刻 (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) return 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 に答える