2015-08-14 154 views
1

出於某種原因,這個代碼是導致odbc_execute();試圖打開一個文件...PHP ODBC執行所試圖打開一個文件

$file = fopen('somefile.csv', 'r'); 
fgetcsv($file); // Skip the first line 
$data = []; 
while (($line = fgetcsv($file)) != false) { 
    $data[] = $line; 
} 
fclose($file); 

try { 
    $conn = odbc_connect("Teradata", "User", "Pass"); 
    odbc_autocommit($conn, false); 

    odbc_exec($conn, 'DELETE FROM table'); 

    foreach ($data as &$test) { 
     $stmt = odbc_prepare($conn, 'INSERT INTO table (experiment_code, experiment_name, variant_code, variant_name, version_number, report_start_date, report_end_date, status, transaction_date, experiment_test_id, test_manager, product_manager, pod, created_date, last_updated_date) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)'); 
     odbc_execute($stmt, $test); 
    } 

    odbc_commit($conn); 

    $result = odbc_exec($conn, 'SELECT * FROM table'); 
    odbc_result_all($result); 
} catch (Exception $e) { 
    odbc_rollback($conn); 
    echo $e->getMessage(); 
} 

這裏是剪斷,它的CSV文件...

H1225,Some random text,H1225:001.000,Control,3,02/06/2014,03/31/2014,Completed,,HMVT-1225,Some random name,Some random name,Checkout,03/31/2014 16:54,02/06/2014 16:38 
H1225,Some random text,H1225:001.000,Control,3,02/06/2014,03/31/2014,Completed,,HMVT-1225,Some random name,Some random name,Checkout,03/31/2014 16:54,02/06/2014 16:38 

這裏是錯誤我得到的類型......

Warning: odbc_execute(): Can't open file Control in C:\wamp\www\HEXinput\assets\php\dumpCSV.php on line 19 

我得到同樣的錯誤絕對的多個版本t用不同的文件名。文件名似乎來自第3列(基於0)。另一個奇怪的是,它實際上確實插入了一些行。

最後的錯誤我得到的是...

Fatal error: Maximum execution time of 120 seconds exceeded in C:\wamp\www\HEXinput\assets\php\dumpCSV.php on line 27 

我使用Teradatas ODBC驅動程序在Windows 15版本7 64位。

這可能是什麼原因造成的?

+0

你確定這是正確的形成csv? 「一些隨機文本」看起來並不樂觀。如果包含任何',',你會拋出數組,因爲csv分析器發現「更多」字段比真正應該。 –

+0

我相信這是..我怎麼能仔細檢查? – ChristopherStrydom

+0

'echo count($ line)'看看所有的行是否有相同的計數。任何錯誤的解析幾乎肯定會拋棄。 –

回答

0

原來,CSV文件中的一些字段中有單引號,導致查詢中斷。

簡單但煩人的疏忽。