2009-07-14 6 views
5

Ich habe eine Produkttabelle in SQL Server 2005, die von bestimmten Feldern in einer CSV-Datei aktualisiert werden muss. Beide Dateien haben eine Herstellerteilenummer, mit der verlinkt werden kann, wo ich das Feld products.discontined mit einem anderen in der CSV-Datei aktualisieren kann.tsql: beste Möglichkeit, eine db-Tabelle mit einer CSV-Datei zu aktualisieren

Meine Frage ist, was ist der beste Weg, um dies zu nähern?

Ich habe überlegt, eine ODBC-Verbindung zu der Excel-Datei zu erstellen und herauszufinden, wie Sie die 2 Spalten aktualisieren. Importieren Sie die gesamte CSV-Datei (~ 60 MB) in eine temporäre Tabelle in SQL Server und schreiben Sie dann eine tsql-Prozedur zum Suchen, Vergleichen, Aktualisieren? tun und Open-Source-Befehl auch von Query Analyzer und ein Verfahren zu schreiben in der CSV-Datei zu lesen und die Tabelle, die Art und Weise zu aktualisieren ..

Dank im Voraus

+1

Ist dies eine ständige Aktualisierung oder eine einmalige Operation? Das wird helfen, den besten Weg zu bestimmen. –

+1

Auch ist die CSV sauber? IE Zitate entkommen und dergleichen? –

+0

Bitte beachten Sie: Das 'sqlserver' Tag wurde kürzlich zugunsten von 'sql-server' veraltet. –

Antwort

3

Wenn es Ihnen, Ihre beste Wette mit SQL Server 2005 verfügbar ist ist die SQL Server Integration Services (früher Data Transformation Services oder DTS). Dadurch können Sie ein Paket erstellen, das sich an einem beliebigen Ort befinden und nach einem Zeitplan ausgeführt oder bei Bedarf aufgerufen werden kann. Es kann auch asynchron zu der Anwendung ausgeführt werden, die es aufruft.

Update:
zusätzlich können Sie das Paket ausführen und debuggen, um es perfekt zu bekommen, bevor Sie sich entscheiden, es zu veröffentlichen. Dies ermöglicht es Ihnen, für Dinge wie fehlerhafte Dokumente zu berücksichtigen usw.

wenn Sie haben SSIS Ihnen nicht zur Verfügung, dann können Sie eine Bulk-Insert tun (Referenz: 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/)

eine Tabelle erstellen, die den Umriss übereinstimmt dann Ihre cSV-Import es folgendes mit:

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

von dort kann man es mit Tsql verwandeln kann, wie es in einer Tabelle in Ihrem db ist.

Wenn es sich um eine ständige Aktualisierung handelt, können Sie temporäre Tabellen erstellen, um Ihre Arbeit zu erledigen und die gespeicherte Prozedur als Job auszuführen.

+0

dies steht mir zur Zeit nicht zur Verfügung. – phill

+0

aktualisiert, weil Sie keinen Zugriff auf SSIS –

+0

haben, können Sie auch hier suchen: http://support.microsoft.com/kb/321686 da Sie erwähnen, die Datei beginnt als Excel –

Verwandte Themen