問題描述:
需要從SqlServer中導出一份表資料到Clickhouse中,從SqlServer中查詢出所需要的資料并儲存為csv檔案格式,将csv檔案導入Clickhouse時出現字段錯位導入失敗.
問題分析:
從Clickhouse報錯資訊看出可能是字段中包含換行符号\r\n等特殊符号導緻檔案解析時不能正确的分割資料行,使用
head -n 2 檔案名稱
确認檔案行分割的确有問題.
解決方法:
1.可以使用sed替換掉檔案中的\r\n,需要使用全局替換(預設按行替換),如果檔案比較大就耗費時間比較長.
2.從SqlServer查詢資料時使用Replace替換調字段中的\r\n,最初使用:
replace(字段名, '\n','')
replace(字段名, '\r','')
不起作用,後改為:
replace(字段名, CHAR(10),'')
replace(字段名, CHAR(13),'')
成功解決問題.其中CHAR(10)對應\n,CHAR(13)對應\r