我試圖導入一些csv和製表符刪除txt飼料到我的數據庫使用PHP腳本。他們似乎都工作,除了這一個。PHP mySQL LOAD LOCAL INFILE正好導入一半?
我有一個基地PHP腳本,包括數據庫連接,禁用鍵,每個進口進料(通過包括語句)並重新啓用密鑰,然後輸出最終結果之前。
,是造成我的問題是飼料這一塊,或者我應該說的SQL語句。
$sql = "
LOAD DATA LOCAL INFILE '../feeds/feed6.txt'
INTO TABLE supplierimport
FIELDS TERMINATED BY ','
ENCLOSED BY '\"'
LINES TERMINATED BY '\\r\n'
IGNORE 1 LINES
(@col1,@col2,@col3,@col4,@col5,@col6,@col7,@col8,@col9,@col10,@col11,@col12,@col13,@col14,@col15,@col16)
SET
DistributorID = 546, [email protected], [email protected], [email protected], `Condition`[email protected], [email protected], Cost= replace(@col4, ',', ''), [email protected], [email protected], [email protected], [email protected]";
database_queryModify($sql,$result);
print "Imported...";
所以,就這一個兩個問題:
使用此語句正確的;
Cost= replace(@col4, ',', ''),
我使用這個說法的原因是因爲我導入從每家供應商的成本入列cost
在我的數據庫,但這個特殊的供應商使用的千個分隔符,即顯示飼料中1,000.53
中,因此不會導入到我的數據庫正確,所以我找到了替換功能,但想驗證即時通訊在這種情況下正確使用它?正是在文件中一半的行被導入到我的數據庫。我發現了這個問題; mysql load data local infile syntax issues with set fields正如你所看到的我已經把\ r \ n,但它仍然不會導入所有。
任何人都可以幫忙。
感謝
編輯:在逗號deliminated文本文件作爲一個例子,是三排。這是從文件中粘貼的,因此我沒有在每行之間插入額外的行。此外,第3行,你會看到,價格是「1,117.00」說明如何使用千個分隔符的工作:
"Item No.","Description","Description 2","Customers Price","Home stock","Brand Name","Expected date for delivery","Item Group No.","Item Group Name","Item Product Link (Web)","Item Picture Link (Web)","EAN/UPC","Weight","UNSPSC code","Product type code","Warranty"
"/5PL0006","Drum Unit","DK-23","126.00","32","Kyocera","03/11/2013","800002","Drums","http://uk.product.com/product.aspx?id=%2f5PL0006","http://s.pic.eu/products/2_PICTURE-TAKEN.JPG","5711045360824","0.30","44103109","","3M"
"/DK24","DK-24 Drum Unit FS-3750","","1,117.00","8","Dell","07/11/2013","800002","Drums","http://uk.product.com/product.aspx?id=%2fDK24","http://s.pic.eu/products/2_PICTURE-TAKEN.JPG","5711045360718","0.20","44103109","","3M"
你是如何從數據庫中獲得轉儲文件的? –
@NaveenKumar它們是我的供應商提供的價格,以csv和txt製表符分隔 – user2231688
問題在於千位分隔符與字段分隔符相同。因此,你必須改變(預處理你的文件)其中任何一個**之前**你用'LOAD DATA ...'導入它'' – peterm