Hazırlayın ve mevcut veritabanına veri alma

2 Cevap php

SQL Server arka uç ile bir PHP uygulama korumak. DB yapısı kabaca şudur:

lot
===

lot_id (pk, identify)
lot_code

building
========

buildin_id (pk, identity)
lot_id (fk)

inspection
==========

inspection_id (pk, identify)
building_id (fk)
date
inspector
result

Veritabanı zaten çok ve binalar vardır ve ben bazı denetimler almanız gerekir. Anahtar noktalar şunlardır:

  • Bu bir kerelik bir başlangıç ​​yükü bulunuyor.
  • Veriler bir Excel dosyası gelir.
  • Excel veri DB autogenerated kimliklerinden habersiz: denetimler onların lot_code aracılığıyla binalara bağlantılı olmalıdır

Bu veri yük yapmak benim seçeneklerim nelerdir?

date         inspector     result     lot_code
==========   ===========   ========   ========
31/12/2009   John Smith    Pass       987654X
28/02/2010   Bill Jones    Fail       123456B

Update: How I finally did it

Başkası benzer bir görevi yapmak zorunda durumda, bu veri yükü sonunda gerekli adımlar şunlardır:

  1. Excel dosyasını hazırlayın: vb çarşaf ve sütun başlıkları, uygun isimler vermek, istenmeyen sütunları kaldırmak

  2. SQL Server Import / Export Wizard (32-bit sürümü, 64-bit sürümü bu özelliği bulunmuyor) ile, her bir yaprak yükleyin (yeni) bir veritabanı tabloya. Sihirbaz uygun DB yapısını oluşturma dahil olmak üzere, kirli bilgi (en) ilgilenir.

  3. En sevdiğiniz müşteri ile veritabanına oturum açın. SQL kodlama daha kolay hale getirmek için, ben yeni tabloda bazı ekstra alanları yarattı.

  4. Bir hareketi başlatmak.

    BEGIN TRANSACTION;

  5. Yeni oluşturulan tablolarda yardımcı sütunları güncelleyin:

    UPDATE excel_inspection$ SET building_id = bu.building_id FROM building bu INNER JOIN ....

  6. Hedef tablo veri eklemek:

    INSERT INTO inspection (...) SELECT ... FROM excel_inspection$ WHERE ....

  7. Sonuçlarını gözden geçirin ve her şey yolundaymış eğer işlem taahhüt:

    COMMIT;

Mevcut olanlar ile yeni tablolar katılmadan benim durumumda, SQL Server harmanlama çatışmalar hakkında şikayet etti. Bu yeni tabloda uygun bir harmanlama ayarlayarak sabit olduğunu, ancak yöntem farklıdır: SQL Server 2005'te ben sadece SQL Server Manager harmanlama değiştirmek olabilir (Kaydet, tıklayın, tıklayın ve Bitti) ancak SQL Server 2008 ben harmanlama ayarlamak zorunda elle ithalat Sihirbazı ("Edit SQL" düğmesi) içinde.

2 Cevap

1) bir CSV, excel dosyası olsun.

2) bir holding tabloya CSV dosyasını içe: SQL SERVER – Import CSV File Into SQL Server Using Bulk Insert – Load Comma Delimited File Into SQL Server

3) Eğer tutma tablosunda, gerçek tablolarda doğru satırları bina her satır ile yerel değişkenleri ve döngü bildirmek bir saklı yordam / script yazmak. Bu bir kerelik bir yük olduğu için, orada döngü yok ayıp olduğunu ve tüm mantık üzerinde tam kontrole sahip olacaksınız.

Veri veri dosyasında doğal birincil anahtarları sahip olurdu. Lot_code biri olabilir gibi görünüyor, ama ben bina tablo için birini görmüyorum.

Ayrıca, denetimler çok kod aracılığıyla binalar ile ilgili olarak, henüz tabloda ilişki bina ve denetim arasında olduğunu söylüyorlar.

Verileri doğru modellenmiştir ise, geçici tablolar ithal ve sonra ekleme / doğal tuşlarını kullanarak hedef tabloları güncelleyebilirsiniz.