2010-09-23 75 views

Trả lời

6

Bạn có thể xem LOAD DATA INFILE trong MySQL.

Bạn có thể thực hiện thao tác sau khi dữ liệu được tải vào MySQL, thay vì đọc nó lần đầu tiên vào PHP. cửa hàng đầu tiên các dữ liệu thô trong một bảng tạm thời sử dụng LOAD DATA INFILE, sau đó chuyển dữ liệu vào bảng mục tiêu sử dụng một tuyên bố như sau:

INSERT INTO targettable (x, y, z) 
SELECT foo(x), bar(y), z 
FROM temptable 
+0

+ 1 cho LOAD DATA INFILE. Nếu bạn sử dụng phpmyadmin (rõ ràng là PHP :), bạn có thể dễ dàng so sánh một số phương thức, phổ biến nhất: SELECT INTO và LOAD DATA INFILE với tất cả các tham số và tham số khác nhau của chúng. Bạn sẽ làm những gì tốt nhất cho bạn. Rất có thể đó là LOAD DATA INFILE –

+0

Tùy thuộc vào số lượng thao tác mà anh ta phải làm cho dữ liệu có thể khả thi hơn để đọc nó vào php trước tiên và chèn một hàng tại một thời điểm. Nếu số lượng thao tác là quan trọng thì hiệu quả hơn để làm điều đó trong một kịch bản là gì và sau đó anh ta có hai hoạt động. 1. với LOAD DATA INFILE và sau đó 2. với truy vấn UPDATE TABLE. – thomasmalt

3

tôi sẽ chỉ cần mở nó với fopen và sử dụng fgetcsv để đọc mỗi dòng vào một mảng. pseudo-php sau:

mysql_connect(//connect to db); 

$filehandle = fopen("/path/to/file.csv", "r"); 
while (($data = fgetcsv($filehandle, 1000, ",")) !== FALSE) { 
    // $data is an array 
    // do your parsing here and insert into table 
} 

fclose($filehandle) 
Các vấn đề liên quan