php / mysql kullanarak tampon masanın etrafında tabanlı bir db içine çeşitli boru ayrılmış dosyasını almak için önerilen yollar?

4 Cevap php

Hi I am trying to import various pipe delimited files using php 5.2 into a mysql database. I am importing various formats of piped data and my end goal is to try put the different data into a suitably normalised data structure but need to do some post processing on the data to put it into my model correctly.

Bunu yapmak için en iyi yolu, daha sonra çeşitli tablolar içe bir tablo olarak adlandırılan tampon içine almak ve verileri haritaya düşündüm. Daha sonra bazı verileri doğru tabloya almak için / haritalama dönüşümleri uygulamak sadece (80 sütuna kadar orada olacak) Her sütunları temsil alanları ile "tampon" adında bir tablo oluşturmak planlıyorum.

Benim planlı bir yaklaşım daha sonra formatını kontrol etmek için bana esneklik sağlayan, SQL büyü yapmak için çeşitli hazır deyimleri içeren bir işleve sahip olan bu sınıf genişletmek jenerik tampon tabloya boru verileri okur bir temel sınıf oluşturmak için aynı ilk satırda başlıklarını okurken ve bir format değiştirerek.

Benim sorular şunlardır:

  1. Nedir tabloya kaydedilen yerel bir dosyadan veri okuma adımını biri yapmak için en iyi yolu nedir? Ben sonra satır veri hattını takın (http://stackoverflow.com/questions/1092638/best-practice-import-csv-to-mysql-database-using-php-5-x önerildiği gibi) ya da sadece fopen i mysql LOAD DATA kullanmanız gerekir eğer çok emin değilim.

  2. bu iyi yaklaşımdır? Nasıl diğer insanlar bu yaklaşım var?

  3. Yardımcı olabilir zen çerçevesinde bir şey var mı?

Ek: Ben bir zamanlanmış görev yapmak planlıyorum.

4 Cevap

Sonunda i dataload kullanılan VE farklı durumlar için bu http://codingpad.maryspad.com/2007/09/24/converting-csv-to-sql-using-php/ değiştirilmiş.

Sen IMO, bunu yapmak için herhangi bir PHP kodu gerekmez. Sınıflar üzerinde zaman kaybetmeyin. MySQL LOAD DATA INFILE fıkra ihtiyaçları% 95, veri almak için yollar bir çok olanak sağlar. Ne olursa olsun ayraçlar, ne olursa olsun / seçim atlamak için sütunlar. , Dikkatle kılavuzunu okuyun düzgün sorguyu yazarsanız it's worth to know what you CAN do with it. verilerini aktardıktan sonra, iyi bir durumda zaten olabilir. Tampon tablo geçici biri olabilir. Sonra normale veya denormalize o ve ilk tablosunu bırakın. Bir hata varsa komut dizisini yeniden bir dosyaya komut kaydedin.

En iyi yolu nihayet veri uygun şekli ise, bir SQL komut dosyası, test yazmak hataları aramak, değiştirmek, komut dosyasını yeniden çalıştırmaktır. Çok fazla veri varsa, satır küçük bir set üzerinde testler yapmak.

[Eklendi] sql-çoğunlukla bir yaklaşım için bir başka nedeni SQL akıcı değiliz, ancak bir veritabanı ile çalışmak için gidiyoruz eğer, SQL erken öğrenmek için daha iyi olmasıdır. Daha sonra bunun için kullandığı bir sürü bulabilirsiniz ve yüzeysel biliyorum programcıların ortak tuzaklardan kaçınmak olacaktır.

Ben şahsen kullanmak serbest ETL software Kettle by Pentaho (yazılım bu bit genellikle su ısıtıcısı olarak adlandırılır). Bu yazılım mükemmel olmaktan uzak olsa da, ben sık sık ben belirli bir dosya için bir senaryo yazmaya harcamak zorunda kalacaktı zamanın bir kısmını da veri alabilirsiniz bulduk. Bir metin dosyası girişini seçin ve vb sınırlayıcı, sabit genişlik belirtin. Ve sonra sadece (onlar MySQL, SQLite, Oracle, destek ve çok daha fazlası) SQL sunucusuna doğrudan verebilirsiniz.

Onlarca ve onlarca yol vardır. Eğer MySQL örneğine yerel dosya erişimi, LOAD DATA varsa. Aksi takdirde gibi kolayca PHP ile MySQL periyodik sunulması için SQL (veya DEĞERLER hattı) her bir satırı dönüştürebilirsiniz.