LoginSignup
1
0

More than 5 years have passed since last update.

(不具合?)SQLite3/インポート前後で結果出力の改行コードが変わる

Last updated at Posted at 2015-11-29

PowerShell with SQLite3 サンプル集のコードをテストした際に、SQLite3の不具合と思われる現象により、期待した結果が得られずハマったので記載しておきます。

実行環境

Windows 10
SQLite3(sqlite3.exe/version 3.9.2)

現象

インポート前後で、SELECT文の結果出力の改行コードが変わる。
インポート前:CR+LF
インポート後:LF

なお、一旦SQLite3を抜けて再度SQLite3に接続し、
SELECT文を発行すると、改行コードはCR+LFで出力される

問題

SQLite3問い合わせ後、後続の処理でCR+LFを行区切り文字としてテキスト処理を行った場合、行が正しく区切られず、予期せぬ動作をする可能性がある

回避策

・改行コードが、CR+LFでもLFでも問題ないように後続のテキスト処理を行う
・インポート後は一旦SQLite3を抜け、再度接続を行ってから結果出力を行う

再現例

importfile.csv(テストデータ)
image.png

コマンド
c:\minr>sqlite3 test.db
sqlite>.mode csv
sqlite>.output result.csv
sqlite>create table try(id,name);
sqlite>insert into try values(4,'四朗');
sqlite>insert into try values(5,'五郎');
sqlite>select * from try;
sqlite>.import importfile.csv try
sqlite>select * from try;
sqlite>.exit

result.csv(結果出力ファイル)
image.png

2行目までが、インポートする前に出力した結果(改行コード:CR+LF)、3行目以降がインポート後に出力した結果(改行コード:LF)

まとめ

もういっそのこと、Windowsが改行コードをLFだけにしてしまえよ 処理対象のテキストファイルの改行コードが何か、ということを気を付けてプログラムを組まないといけない、と改めて感じました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0