2

行ごとに 1 列の大きなテキスト ファイルがあり、このデータ ファイルを Postgres にインポートしたいと考えています。

動作する MySQL スクリプトがあります。

 LOAD DATA LOCAL 
        INFILE '/Users/Farmor/data.sql' 
        INTO TABLE tablename 
        COLUMNS TERMINATED BY '\n';

これをPostgresに変換するにはどうすればよいですか? 私は他のこのコマンドの中で試しました。

COPY tablename
    FROM '/Users/Farmor/data.sql' 
    WITH DELIMITER '\n'

しかし、それは不平を言います:

エラー: COPY 区切り文字は 1 バイト文字でなければなりません

4

3 に答える 3

2

すぐにエラーになるのは、\nが 2 文字の文字列で\あり、n.

あなたがしたい:

COPY tablename
    FROM '/Users/Farmor/data.sql' 
    WITH DELIMITER E'\n'

構文はE''PostgreSQL 拡張です。

ただし、PostgreSQLCOPYは改行列区切り文字を含むファイルを理解できないため、それでも機能しません。私はそのフォーマットを見たことさえありません。

別のツールを使用してロードし、CSV を変換する必要があります。オフィス スイート、csvPython 用のモジュール、Text::CSVPerl 用のモジュールなどを使用します。次に、クリーンアップされた CSV を PostgreSQL にフィードします。

于 2013-08-23T08:39:23.083 に答える
1

区切り文字は 2 文字であるため、有効なエラー メッセージです。

最も簡単な方法は、インポート元のファイルを変更し、実際に区切り記号をそれ以外のものに変更すること\nだと思いますが、状況によってはそれが選択肢にならない場合があります。

この質問は同じ問題に対処します: エラー: COPY 区切り文字は単一の半角文字でなければなりません

于 2013-08-23T04:35:23.353 に答える