Domanda

Qual è il modo più rapido per riempire una tabella SQL con i dati manichino?

Ho un ampio tavolo con circa 40 campi di diversi tipi (int, bit, varchar, etc.) e la necessità di fare qualche test delle prestazioni. Sto utilizzando SQL Server 2008.

Grazie!

È stato utile?

Soluzione

generatore di dati SQL dal Redgate

la generazione di dati in uno scatto

Dati realistica basata su colonna e il nome della tabella

I dati possono essere personalizzato, se desiderato

ore di lavoro noioso Elimina

Supporto completo per SQL Server 2008

Altri suggerimenti

Consiglia il libero, GNU-licenza, i dati personalizzati casuali generatore http://www.generatedata.com/

risposta in ritardo, ma possono essere utili ad altri lettori di questo thread. Accanto a altre soluzioni, posso consigliare l'importazione di dati da un file .csv utilizzando SQL Server Management Studio o gli script di importazione SQL personalizzati, programmi. C'è un tutorial passo-passo su come fare questo, così si potrebbe desiderare di check it out: http://solutioncenter.apexsql.com/how-to-generate-randomized-test-data-from-a-csv-file/

Essere consapevoli del fatto che l'importazione di un file .csv utilizzando SQL Server Management Studio o gli script di importazione SQL personalizzati, è più facile che creare inserti SQL manualmente, ma ci sono alcune limitazioni, come spiegato nel tutorial:

  

Se v'è la necessità per migliaia di righe da popolati, e il file .csv contiene poche centinaia di righe di dati che non è sufficiente. La soluzione è reimportare lo stesso file .csv più e più volte fino a quando necessario. Lo svantaggio di questo metodo è che inserirà grandi blocchi di righe con gli stessi dati, senza randomizzazione.

Il tutorial spiega anche come utilizzare un generatore di dati SQL partito 3 ° chiamato ApexSQL Genera . Lo strumento dispone di una funzione integrata di generare grandi quantità di dati randomizzati dal file in formato .csv importato. Applicazione dispone di una prova gratuita completamente funzionale in modo da poter scaricare e provare a vedere se funziona per voi.

Solo Go 1000 bisogno dopo il vostro inserto, per riempirlo 1000 volte, proprio come questo:

INSERT INTO dbo.Cusomers(Id, FirstName, LastName) VALUES(1, 'Mohamed', 'Mousavi')
GO 1000

Si farà un tavolo con 1000 stesse righe in esso. Un'altra soluzione è che è possibile popolare la prima riga della tabella con alcuni dati, poi si riempie i prossimi righe della tabella ripetendo la prima fila più e più volte, significa che riempire il vostro tavolo da sola:

INSERT INTO dbo.Customers
SELECT * FROM dbo.Customers 
GO 10

Nel caso in cui uno o più colonne sono di identità (nel senso che accettano valori unici, se si tratta di auto incrementale), basta non metterlo nella tua ricerca, per esempio, se l'ID in dbo.Customer è l'identità, la query va in questo modo:

INSERT INTO dbo.Customers
SELECT FirstName, Last Name FROM dbo.Customers
GO 10

Invece di:

INSERT INTO dbo.Customers
SELECT Id, FirstName, Last Name FROM dbo.Customers
GO 10

Altrimenti incontrerete questo errore:

An explicit value for the identity column in table 'dbo.Customers' can only be specified when a column list is used and IDENTITY_INSERT is ON.

Nota: Questa è una sorta di una progressione aritmetica, in modo che l'ultima gonna un po ', non utilizzare un gran numero davanti GO.

Se si desidera avere una tabella che viene riempito un po 'più elaborato, allora è possibile ottenere che allo stesso modo questa volta eseguendo una query semplice e seguendo questa procedura:

  1. Scegliere una delle tabelle che ha un notevole numero di righe, dire dbo.Customers

  2. Fare clic destro su di esso e selezionare Script Table as > Create To > New Query Editor Window

  3. un nome alla nuova tabella per qualcos'altro come dbo.CustomersTest, ora è possibile eseguire la query di avere una nuova tabella con struttura simile con le dbo.Customers.

Nota:. Tenete a mente che se ha depositato un'Identità, cambiarlo di Identity Specification to No Dal momento che si suppone di riempire la nuova tabella dai dati di quella originale più volte

  1. Esegui la seguente interrogazione, che sta per essere eseguito 1000 volte, è possibile modificarlo a più o meno, ma essere consapevoli che potrebbe durare minuetti sulla base di hardware del computer:

INSERT INTO [dbo].[CustomersTest] SELECT * FROM [dbo].[Customers] GO 1000

  1. Dopo un po 'si dispone di una tabella con righe fittizie in esso!

Come @SQLMenace accennato, Redgate Data Generator è un così buon strumento per realizzarla, costa $ 369, si dispone di un 14 giorni di prova possibilità Sebbene.

Il punto positivo è che le chiavi esterne identifica Redgate modo da poter applicare ENTRA nelle query.

Hai un sacco di opzioni che consentono di decidere come si suppone che ogni colonna a popolarsi, ogni colonna viene anticipato semanticamente in modo che i dati relativi sono suggeriti, per esempio se si dispone di una colonna chiamata 'Dipartimento' non è riempito da personaggi strani, è riempito da espressioni come "tecnici", "Web", "cliente", ecc Anche è possibile utilizzare espressioni regolari per limitare i caratteri selezionati.

I popolato le mie tabelle con oltre 10.000.000 di record che era una simulazione impressionante.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top