Nasıl MySQL Tablo güncel anlık ve bu CSV dosyası içine saklamak (oluşturduktan sonra)?

1 Cevap php

Ben şimdi "Select * from MyTableName", Veritabanı ile etkileşim için PDO PHP olarak kullanıyorum kullanarak Veritabanı getCurrentSnapshot wan, büyük veritabanı tablo var, yaklaşık 5GB. Yani bir sorgu hazırlamak ve sonra infaz

        // Execute the prepared query
        $result->execute();
        $resultCollection = $result->fetchAll(PDO::FETCH_ASSOC);

bellek sürü olarak etkili bir yoldur değildir yaklaşık ilişkisel dizi veri içine saklamak için kullanıcı olmanın, 5GB.

Benim nihai hedefi bir CSV dosyası içine Select sorgu tarafından döndürülen verileri toplamak ve İstemci alabilirsiniz yerden bir FTP Location CSV dosyasını koymaktır.

Diğer Seçenek yapmak olduğunu düşündüm:

SELECT * INTO OUTFILE "c:/mydata.csv"
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY "\n"
FROM my_table;

Ama ben tam sürecini başlatır cron'u var ve biz bir csv dosyası yok gibi bu iş olsaydı emin değilim, bu nedenle temelde bu yaklaşım için,

  1. PHP Script bir CSV dosyası oluşturmanız gerekir.
  2. Veritabanında bir seçim sorgusu yapmak.
  3. CSV dosyası içine seçme sorgusu sonucu depolamak.

Ne görevi bu tür yapmak için iyi veya etkili yolu olurdu?

Herhangi Öneriler!

1 Cevap

Sen fputcsv (see the PHP Manual) bir dosya halinde csv tek satırları yazmak için php işlevini kullanabilirsiniz. Hafıza sorunu içine çalıştırmak için sipariş yerine seferde belirlenen tüm sonuç getiriliyor, sadece onu seçin ve sonra sonucu üzerinde yineleme:

$fp = fopen('file.csv', 'w');

$result->execute();
while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
    // and here you can simply export every row to a file:
    fputcsv($fp, $row);
}
fclose($fp);