###前提・実現したいこと
毎日他のシステムで作成される日本語ヘッダ付きCSVをDBサーバーに置き
夜間バッチでディレクトリ内のCSV全てインポートしたいです。
ご教示くださいますよう、お願い致します。
(サンプルコードをいただけると幸いです)
###発生している問題・エラーメッセージ
PostgreSQL9.0なので、COPYオプションにENCODING が指定できません。
SET client_encoding TO 'SJIS';
COPY table_name FROM E'C:\test\importdata1.csv' (format csv, header true );
と2行にしないと取り込めません。
バッチファイルではpsql.exe以降1行で記述しないとならないようなので困っています。
他サイトで回答のあった
set IMPCMD=-q -t SET client_encoding TO 'SJIS';COPY table_name FROM E'C:\test\importsuru.csv' (format csv, header true ); \q
echo %IMPCMD% | psql.exe -U postgres -d [データベース名] -h localhost
を試したところ
ERROR: syntax error at or near "-"
陦・1: -q -t SET client_encoding TO 'SJIS';
^
ERROR: invalid byte sequence for encoding "UTF8": 0x8a
CONTEXT: COPY table_name, line 1
と出てしまいます。
###試したこと
インポートバッチ.bat
@echo off
psql.exe -U postgres -d dbname -h localhost -q -t -f C:/test/importCSV.sql
exit
importCSV.sql
SET client_encoding TO 'SJIS';
COPY table_name FROM E'C:\test\importdata1.csv' (format csv, header true );
は動きます。
どちらかのファイルでループできればいいのですが。
###補足情報(言語/FW/ツール等のバージョンなど)
DBサーバー
OS:Windows Sever 2008 R2 Standard
PostgreSQL9.0

回答2件
あなたの回答
tips
プレビュー