2014-10-09 93 views
1

我沒有要求導入來自客戶的訂單,這將含有作爲他們的客戶數據,即第一行約4字段CSV解析器,用於在一個csv文件報頭和細節上的線

customer number, order date, order no, delivery date 

下一個X行數將包含需要product codequantity的兩個字段。

我有其他程序,將拉入標準的價格清單等,並解析,但我很努力得到我的頭如何將CSV文件拆分成兩個不同的部分。

如何可以做到這一點任何幫助或想法可以理解

+0

如果它只是在第一行,爲什麼不跳呢?它不是CSV的真正組成部分,只是其元數據。通過跳過它,我的意思是將該行作爲單獨的進程來讀取。 – Anthony 2014-10-09 07:11:08

+0

嗨安東尼,對不起,我應該說,第一行將包含實際的標題數據,而不是列標題,其餘的行將包含行項目。所以沒有標題等,因爲非常少量的字段只有兩個單獨的類型;) – 2014-10-09 07:18:34

+0

@ Anthony的建議仍然成立,您可以分別讀取第一行的數據並閱讀其餘的內容,然後在內部一起使用它們。 – 2014-10-09 07:23:10

回答

3

我會建議使用此庫,其將通過name類似於SQL結果數組

customer number, order date, order no, delivery date 

給你列解析它在一個你想要的方式https://github.com/parsecsv/parsecsv-for-php

例如

require_once 'parsecsv.lib.php'; 
$csv = new parseCSV('data.csv'); 
print_r($csv->data); 
+0

嗨,我看到庫中有一個偏移量和限制參數。所以我將能夠對文件右側運行兩個查詢,1爲標題行,然後偏移細節行? – 2014-10-09 07:24:56

+1

我認爲它確實在特徵中看到[github repo](https://github.com/parsecsv/parsecsv-for-php):「用於過濾數據的基本類SQL條件,偏移和限制選項」。 – Saqueib 2014-10-09 07:27:20

2

使用parsecsv library你可以這樣做:

//get customer data first 
// limit the number of returned rows. 
$csv->limit = 1; 
// Parse 'order.csv' using automatic delimiter detection. 
$csv->auto('order.csv'); 
//retrieve the customer data 
$customer_data = $csv->data; 

//get order details after 
//skip the first line 
$csv->offset = 1; 
// Parse 'order.csv' using automatic delimiter detection. 
$csv->auto('order.csv'); 
$order_details = $csv->data; 
+1

哦,夥計,我希望我早些時候在我的生活中找到了這個圖書館,非常感謝你爲大家提供的幫助。不知道誰爲正確的答案而感謝,因爲所有的幫助,但我會說Saqueib建議這個圖書館 – 2014-10-09 08:04:38