2014-06-20 20 views
5

Sono nuovo di Sql ma ciò che è il modo migliore per inserire più di 1000 righe da un documento di Excel nel mio database (Sql Server 2008.)Inserimento di più di 1000 righe da Excel in SQLServer

Per esempio io 'm utilizzando la query di seguito:

INSERT INTO mytable(companyid, category, sub, catalogueref) 
    VALUES 
    ('10197', 'cat', 'sub', '123'), 
    ('10197', 'cat2', 'sub2', '124') 

Questo sta lavorando bene, ma c'è un limite di inserimento di 1000 record e ho 19000 dischi e non ho davvero voglia di fare 19 istruzioni di inserimento separate e un'altra domanda, è che l'ID dell'azienda è sempre lo stesso, c'è un modo migliore di scriverlo 19000 volte?

+2

Da dove vengono i dati? Un altro tavolo? Un file? La tua zucca? – JiggsJedi

+1

letto su [utilità bcp] (http://msdn.microsoft.com/en-us/library/ms162802.aspx) –

+0

Ciao Jiggs, l'ho preso in un foglio separato excel – user3545217

risposta

4

Microsoft fornisce uno import wizard con SQL Server. L'ho usato per migrare i dati da altri database e da fogli di calcolo. È abbastanza robusto e facile da usare.

+0

Questa è una buona soluzione. Ma quello che vorrei sapere è in che orientamento sono i tuoi dati originali? È Excel? Accesso? Potresti semplicemente esportare un file CSV se lo è e usarlo. Se i dati sono configurati in un altro modo, potrebbero esserci altre soluzioni. – jollarvia

+0

Il richiedente ha i dati in un foglio di calcolo Excel quindi esportare in CSV e quindi utilizzare un altro strumento come 'bcp' sarebbe anche un'opzione. L'interfaccia utente del wizard di importazione è piuttosto utile quando iniziano a verificarsi problemi di importazione. –

+0

Sì, i miei soldi sul wizard di importazione – jollarvia

0

Si dovrebbe essere in grado di inserire l'utilizzo di più transazioni -

BEGIN TRANSACTION 
Insert into mytable(companyid,category,sub,catalogueref) 
    values 
    ('10197','cat', sub','123'), 
    ('10197','cat2', sub2','124') 
    ...998 more rows... 
COMMIT TRANSACTION 
go 
BEGIN TRANSACTION 
Insert into mytable(companyid,category,sub,catalogueref) 
    values 
    ('10197','cat', sub','123'), 
    ('10197','cat2', sub2','124') 
    ...998 more rows... 
COMMIT TRANSACTION 
7

Basta modificare i dati in Excel o un altro programma per creare N quantità di istruzioni di inserimento con un unico inserto per ogni istruzione, avrete un numero illimitato di inserti. Ad esempio ...

INSERT INTO table1 VALUES (6696480,'McMurdo Station',-77.846,166.676,'Antarctica','McMurdo') 
INSERT INTO table1 VALUES (3833367,'Ushuaia',-54.8,-68.3,'America','Argentina') 
...19,000 later 
INSERT INTO table1 VALUES (3838854,'Rio Grande',-53.78769,-67.70946,'America','Argentina') 
+0

Questo risultato è molto più veloce da ottenere rispetto alla divisione dell'istruzione 'INSERT' in batch di 1000 tuple di valore. Grazie per avermelo fatto notare. – Oliver

Problemi correlati