Sybase ASE 入門 データのインポート (BCP)
コマンドラインから csv などの Textファイルを DBにインポートしたい場合
方法 は 下記のいずれか
- bcp utility を使ってインポートする (データが多い場合に推奨)
- insert 文でがんばる (データが少ない場合に推奨)
- transfer 構文があるけどうまく使えず。importはASEフォーマットのみ?
検索すると「INPUT INTO ... 」が出てきますが使えません。これは GUI版のintractive SQL, SQL Anywhere(違う製品)のコマンドみたいです。
BCP(BulkCopy) 使い方
csvをインポートする
bcp ${table_name} in ${csv_path} -t, -c
- 特定のカラムのみをIMPORTする場合は、インポートファイルとテーブルのMappingファイルが必要。Mappingファイルは実行時に対話形式で生成可能。
- 例えば、テーブルは4カラムあるけど、インポートファイルは2カラムだけとか。
Mappingファイルのフォーマットはこんな感じ。(公式資料より抜粋)
エラーの許容行数を増やす
bcp ${table_name} in ${csv_path} -t, -c -m 1000
通常は10行エラーがあると、すべてのロードは中止となる。
m オプションで行数を指定することで、行数を変更可能。
BCP でちょっと困ること
- ダブルクオートで囲ってあるデータはインポートできない -> 自分でがんばって取り除く。
- 重複キー制約で落ちるため、大量データの更新目的には使えない。