Mysql
mysql載入數據本地infile正在跳過第一行的第一列
我們有一個 PHP 腳本,它已經從 WAMP 伺服器上的命令行執行了幾年。我現在將其轉換為在 Linux(AWS EC2 AMI 實例)上執行。該腳本基本上將數據從 csv 載入到 mysql 表中。它幾乎可以工作,但由於某種原因,它跳過了第一行第一列中的數據。這是sql:
LOAD DATA LOCAL INFILE '/var/scripts/_output/ref_dtl_output.csv' REPLACE INTO TABLE MY_TABLE.ref_dtl FIELDS TERMINATED BY ',' ENCLOSED BY '' LINES TERMINATED BY '\n'
它正在載入的文件從幾百字節到 > 100K 字節不等。在每種情況下,無論是數千行還是 1 行,第一行的第一列始終為“0”或空字元串。我檢查了每個 csv,那裡有數據。這在 Windows 伺服器上從未發生過。
我嘗試從 PHP 腳本中執行上面的 SQL,我還嘗試使用 HeidiSQL 導入它並得到相同的結果。
CREATE TABLE `ref_dtl` ( `site_id` INT(11) NOT NULL, `business_date` DATE NOT NULL, `trans_seq` INT(10) NOT NULL, `dtl_seq` INT(10) NOT NULL, `parent_trans_seq` INT(10) NOT NULL, `parent_dtl_seq` INT(10) NOT NULL, `ref` CHAR(20) NOT NULL, `ref_type` CHAR(3) NOT NULL, PRIMARY KEY (`site_id`, `business_date`, `trans_seq`, `dtl_seq`, `parent_trans_seq`, `parent_dtl_seq`), INDEX `site_id` (`site_id`), INDEX `business_date` (`business_date`), INDEX `trans_seq` (`trans_seq`), INDEX `dtl_seq` (`dtl_seq`), INDEX `parent_trans_seq` (`parent_trans_seq`), INDEX `parent_dtl_seq` (`parent_dtl_seq`) ) COLLATE='utf8_general_ci' ENGINE=InnoDB ;
關於如何修復的任何想法?
根據文本文件的來源,這裡的 csv 文件,它可能具有順序字節 (BOM)字元。
在這種情況下,第一行的第一列將是無效整數,並將在數據庫中保存為 0。
要檢查文件開頭是否有 BOM 字母,請參閱此連結。