2015年1月3日 星期六

[postgresql] 移除 carriage return value的方法

今天在嘗試用 NpgsqlCopyIn  時,遇到了語法錯誤,因為內容含有  carriage return 。















wiki 這樣說
電腦早期引用了許多電信概念與技術。早期制定的代碼如ASCII(現今仍沿用)和EBCDIC與後期的Unicode都包括「歸位」控制字元。計算機和印表機的文字排列與電傳印表機幾乎相同。 在電腦上,編輯軟體中歸位鍵一般用於結束一行文字輸入,並將游標移到下一行的開始位置,選單或選項窗口中一般用於確認當前選項。
ASCII編碼中,歸位的編碼是十進位的13,或十六進位的\0x0D。
C語言或部份其他語言,會用\r來表示這字元。依照作業系統的不同,有時會配合換行字元\n使用。在不少文字編輯器中,有時也會用 ^r 或 ^M (相當於 Ctrl-M) 來表示。
簡單來說就是你的資料中含有換行符號,在生成SQL語法時會出現錯誤(使用NpgsqlCopyIn)時才會。順手查了一下要怎麼查出含有NpgsqlCopyIn 的資料呢?請參考以下語法

select regexp_replace(field, E'[\\n\\r]+', ' ', 'g' ) from Table

field  指的是欄位名稱 (column name)


資料來源Stack Overflow


以這個資料表為例














select regexp_replace(name, E'[\\n\\r]+', ' ', 'g' ) from animal




沒有留言:

張貼留言