Kopírovanie tabuliek SQL(ce)   otázka

VB.NET, ADO.NET, Databáze

Ahojte, dlho som nepísal :)

Mám opät zrejme triviálny problém, tak skúsim, ci ma niekto nakopne:

Mám vytvorenú štruktúru tabuliek v databázi SQLCe.

Casom som tabulky naplnil hodnotami, ale zistujem, že by som potreboval v tabulkách pridat nejaké polia + pridat ešte asi dve nové tabulky.

Chápem, že vo VS 2010 mi stací pripojit v Server Exploreri novú Data Connection a môžem veselo editovat celú databázu.

Pred zaciatkom testovania aplikácie si vždy zálohujem úplne prázdnu tabulku, bez dát. To kvôli tomu, aby som ju mohol potom distribuovat spolu s hotovou aplikáciou. Ja by som to teraz potreboval urobit tak, že by som si do tej databázy bez dát pridal riadky a polia a potom do takto upravenej databázy prekopíroval dáta z tej, kde už mám nejaké dáta.

Aktuálne polia nechcem menit, zostanú rovnaké definície, takže ku kolízii dôjst nemôže.

Urobil by som to asi takto:

Teoreticky aj prakticky dokážem prejst v cykle For Each všetky tabulky a snád aj polia. Najprv som myslel, že pomocou INSERT klasicky vložím hodnoty do prázdnych tabuliek v novej databázi.

Lenže som si uvedomil, že problém by bol s autoincrement fields.

Na internete som však našiel jeden príklad a podla neho som si napísal:

 Private Sub CloneTab()
        Dim ds As DataSet = New DataSet()
        Dim tblZdroj As DataTable
        Dim tblCopy As DataTable

        Dim tblZdrojCount As Integer
        Dim tblCopyCount As Integer
        Dim i As Integer

        Dim con As SqlCeConnection = New SqlCeConnection(GetConnectionString)

        Try
            HandleConnection(con)

            Dim da As SqlCeDataAdapter = New SqlCeDataAdapter("Select * from KAT", con)
            'Fill the DataSet with data.
            da.Fill(ds, "zdroj")
            tblZdroj = ds.Tables("zdroj")
            tblZdrojCount = tblZdroj.Rows.Count

            tblCopy = tblZdroj.Clone

            For i = 0 To tblZdrojCount - 1
                tblCopy.ImportRow(tblZdroj.Rows(i))
            Next

            tblCopyCount = tblCopy.Rows.Count
            For i = 0 To tblCopyCount - 1              
                MsgBox("Row(" & i.ToString & ") = " & Decrypt(tblCopy.Rows(i)(2), TabulkaPs) & vbCrLf & tblCopy.Rows(i)(0))
            Next
        Catch ex As Exception
            MessageBox.Show(ex.Message)

        Finally
            HandleConnection(con)
        End Try
    End Sub       

Ked som si dal zobrazit tblCopy (naimportované dáta v prázdnej tabulke), bol som príjemne prekvapený, pretože boli naimportované aj autoincrement fields presne tak, ako v pôvodnej.

No hej, ale co teraz s tým?

Naklonoval som virtuálne novú tabulku z pôvodnej, naimportoval som do nej dáta z pôvodnej. Ale ako ju pridám do novej databázy?

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Hm, ráno som si uvedomil, že ani tento postup neprinesie asi želaný efekt. Veď som vlastne len v novej tabuľke skopíroval štruktúru pôvodnej tabuľky a do nej nasypal dáta.

Trochu som sa zamotal, pretože ja potrebujem do už EXISTUJÚCEJ tabuľky v databázi pridať dáta z tabuľky zo starej databázy.

Nakopne ma niekto?

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Export/import dat přes libovolný tool? jednoduchý přesun pomocí "SELECT INTO" (pokud není dat mnoho)?

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Nie, dát nie príliš mnoho, ale ide o zašifrované údaje, väčšinou zdravotného charakteru + heslá.

Ale nepochopil som, asi to bolo slabé nakupnutie :)

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

A to je takový problém vytáhnout z původní tabulky všechny záznamy a insertovat je do finální tabulky?! Vždyť se jedná o naprosto základní práci s SQL

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Áno, je to problém, v úvodnom príspevku som to vysvetlil.

Preto som sa obrátil o pomoc.

INSERT ovládam, v podstate celé SQL, priemerne.

V aktuálnej DB boli záznamy už aj odstraňované.

Mám pri ID v každej tabuľke autoincrement polia.

Keby som dával INSERT, tak sa každý riadok začne číslovať vzostupne, súvisle. (1,2,3,4,5,6,7,8,9...)

V aktuálnej tabuľke mám ale napríklad 1,2,3,7,8,9,13).

Tabuľky sú navzájom prepojené.

Takže po aplikácii INSERT by sa to celé sprasilo... :)

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback