2009-07-14 23 views
5

Ho una tabella prodotti in SQL Server 2005 che deve essere aggiornata da determinati campi in un file CSV. Entrambi i file hanno un numero di parte del fornitore che può essere collegato a dove posso aggiornare il campo products.discontined con un altro nel file csv.tsql: il modo migliore per aggiornare una tabella db con un file csv

La mia domanda è qual è il modo migliore per avvicinarsi a questo?

Ho pensato di creare una connessione odbc al file excel e di capire come unire le due colonne. Importare l'intero file csv (~ 60 MB) in una tabella temporanea in SQL Server e quindi scrivere una procedura tsql per cercare, confrontare, aggiornare? Anche facendo e comando opensource da Query Analyzer e la scrittura di una procedura per leggere nel file CSV e aggiornare la tabella in questo modo ..

grazie in anticipo

+1

È un aggiornamento costante o un'operazione una tantum? Ciò contribuirà a determinare il percorso migliore da intraprendere. –

+1

Anche il CSV è pulito? Citazioni IE sfuggite e simili? –

+0

Nota: il tag 'sqlserver' è stato recentemente ritirato a favore di 'sql-server'. –

risposta

3

Se è a disposizione di voi, la soluzione migliore con SQL Server 2005 è SQL Server Integration Services (in precedenza Data Transformation Services o DTS). Questo ti permetterà di creare un pacchetto che può risiedere ovunque ed essere eseguito su una pianificazione o invocato ogni volta che decidi. Può essere eseguito in modo asincrono rispetto all'applicazione che lo chiama.

aggiornamento:
Inoltre è possibile eseguire e eseguire il debug del pacchetto per renderlo perfetto prima di decidere di pubblicarlo. Questo vi permetterà di conto per cose come documenti malformati ecc

se non si dispone di SSIS a vostra disposizione, allora si potrebbe fare un inserimento di massa (di riferimento: http://blog.sqlauthority.com/2008/02/06/sql-server-import-csv-file-into-sql-server-using-bulk-insert-load-comma-delimited-file-into-sql-server/)

creare una tabella che corrisponde al contorno del csv quindi importarlo utilizzando la seguente:

BULK 
INSERT MyTable 
FROM ‘c:\mycsv.csv’ 
WITH 
(
    FIELDTERMINATOR = ‘,’, 
    ROWTERMINATOR = ‘\n’ 
) 

da lì si può trasformare utilizzando tsql in quanto è in una tabella nel db.

se è un aggiornamento costante è possibile creare tabelle temporanee per eseguire il proprio lavoro ed eseguire la stored procedure come lavoro.

+0

questo non è disponibile per me al momento. – phill

+0

aggiornato perché non si ha accesso a SSIS –

+0

si potrebbe anche voler guardare qui: http://support.microsoft.com/kb/321686 poiché si menziona il file inizia come excel –

Problemi correlati