CSV file and hints of importing to BigQuery
What is CSV file
name,address,age
Bill,Road ABC No. 32,28
Mary,Avenue Bella 2,18
如果地址包含符號如逗號: ,
, 要如何寫在 CSV 文件裡 ?
name,address,age
Bill,"Road ABC No.32, Tokyo",28
Mary,Avenue Bella 2,18
如果地址是: Avenue Bella in “small” hill
意即地址中要包含 雙引號 “, 要如何寫在 CSV 文件裡 ?
name,address,age
Bill,"Road ABC No.32, Tokyo",28
Mary,"Avenue Bella in ""small"" hill",18
另外,CSV 既然是一種限定格式的 text file,就有相應的 編碼 ,及 斷行符號 定義:
斷行符號:
- LF: (0x0A) Line Feed 常見於 unix-line 系統,與近代的 Mac OSX
- CR: (0x0D) Carriage Return 常見於早期的 Apple 電腦,及 Mac OS 版本9 之前
- CR + LF: (0x0D0A) Windows 微軟作業系統使用
編碼:
- UTF-8 : 逐漸變成主流的萬國字集
- UTF-16 : 萬國字集,又可分 LE / BE (Little Endian, Big Endian)
- Big5 : 台灣的繁體字集
- GB2312 : 簡體字集
- GB18030 : 簡體字集的拓展版本,可容納 中日韓 字集
另外,在 UTF-X 的編碼文件,可能會有 BOM (Byte-Order Mark)在檔案的起始處。請參見說明。
LE / BE (Little Endian / Big Endian) 的說明,請參見 格列佛遊記
一些處理 編碼 和 CSV文件 時用到的 linux 指令:
hexdump : 打印出文件的 16 進制 內容,可以確定文件實際儲存的位元內容
iconv : 轉換各種編碼用
sed : 替換文件內容
awk : 利用某種分隔符號 處理/查看 文件
練習用的 CSV:
下載這個文件,點擊這裡下載 csv_samples.tgz
先不要看裡面的 hints.txt 文件,這個文件提示每個 CSV 文件的特殊處。
解開壓縮後有 5 個略有不同的 csv 文件,能否都順利的導入 BigQuery?