Conversione rapida di tabelle mysql e SQLServer in un'utilità di aggiornamento

1

I requisiti sono di prendere un elenco esistente di tabelle identiche (AAA0001 - AAA9999) che generalmente non soddisfano i nostri requisiti attuali e devono essere scambiati con tre tabelle (XXX0001-XXX999, YYY0001-YYY999 e ZZZ0001-ZZZ999) .

Attualmente, il ragazzo che sta programmando questo aggiornamento che dovrebbe avere luogo sui nostri computer client che eseguono sia MySQL che Microsoft SQL Server sta eseguendo select e inserisce query che sono destinate a rendere il prossimo aggiornamento il più lento e doloroso in la storia del nostro prodotto.

Penso che potremmo fare qualcosa di più veloce scaricando le tabelle in un database, manipolando le stringhe e sviando il database.

Tuttavia, non abbiamo mai usato alcun connettore di database oltre a ODBC per il nostro programma e non abbiamo necessariamente la facoltà di fare un dump di mysql e di SQLServer (a meno che non sia facile).

Quindi, qual è il modo più rapido per scaricare e annullare le righe su ODBC? Se non esiste un modo rapido, qual è l'alternativa più sicura e più semplice da implementare?

Usiamo Delphi XE2 Enterprise, se qualcuno ha strumenti di terze parti o conosce scorciatoie. Non abbiamo mai usato datasnap, dato che non avevamo la "buona versione" di Delphi fino a quando non abbiamo aggiornato a XE2, quindi non ho capito se ha questa funzionalità.

    
posta Peter Turner 13.03.2012 - 19:42
fonte

3 risposte

1

Lo farei direttamente sul server SQL ..

Ripristinare il DB di origine sul server DB di destinazione Quindi Crea un gruppo di istruzioni di inserimento

INSERT INTO TargetDb.dbo.XXX0001 ("column1", "column2", ...)
SELECT "column3", "column4", ...
FROM SourceDb.dbo.AAA0001
--
INSERT INTO TargetDb.dbo.XXX0001 ("column1", "column2", ...)
SELECT "column3", "column4", ...
FROM SourceDb.dbo.AAA0002
--
INSERT INTO TargetDb.XXX0001 ("column1", "column2", ...)
SELECT "column3", "column4", ...
FROM SourceDb.dbo.AAA0003

O Utilizzare l'utilità di importazione di SQL Server

    
risposta data 13.03.2012 - 19:56
fonte
1

Ha una leggera curva di apprendimento ma SQL Server Integration Services (SSIS) è costruito per fare esattamente quello che vuoi e lo fa abbastanza rapidamente anche. Supporta drastici dump di dati e persino la trasformazione dei dati utilizzando un approccio "pipeline" da e verso SQL Server e quasi tutte le altre origini dati che è possibile lanciare.

Rhino ETL è un altro strumento che accoppia la velocità e la potenza di SSIS con un approccio più "code-friendly" per ETL.

    
risposta data 13.03.2012 - 20:41
fonte
1

Il modo più veloce sarebbe utilizzare le operazioni basate su set sul server usando odbc come un semplice pass-through di comando SQL. Funzionerebbe qualcosa come:

1) Esegui DDL SQL per creare la nuova tabella
2) Esegui il comando sql per SELEZIONARE dalla vecchia tabella INTO alla nuova tabella con il massaggio dei dati richiesto.

Fare qualcosa fila per fila dal lato del cliente sarà più lento da ordini di maginitude rispetto a questo tipo di approccio, ma ha alcuni vantaggi. Soprattutto se la fase di trasformazione dei dati diventa complessa.

    
risposta data 13.03.2012 - 20:45
fonte

Leggi altre domande sui tag