himorogiの日記

主にプログラミングに関することなど。少々ハード(電子工作)についても。

PowerShellからExcelが出力したUnicodeテキストをUFT8 BOM無し '|' 区切りに変換

SQLiteデフォルト設定のインポートテキスト形式として保存する方法

SQLiteエンコーディングと区切り文字をデフォルトから変更しない場合は、ExcelからUnicodeテキストとして保存されたファイルを、さらにUTF8 BOM無し'|' 区切りに変更する必要がある。
UTF8 BOM無しの定数が無いので、エンコーディング指定のパラメータは以下のようにして渡す。

$( New-Object System.Text.UTF8Encoding($False) )  

エンコーディングの変更と同時に、区切り文字の置換を行う必要があるので、StreamWiriteを使って書き出す。

$sw = New-Object System.IO.StreamWriter $sqlitePath, $( New-Object System.Text.UTF8Encoding($False) )  
gc $xlsPath -encoding Unicode | % { $sw.WriteLine( $_.replace( "`t","|" ) ) }
$sw.close()