2016-08-08 8 views
0

Es mag als eine einfache Aufgabe erscheinen, aber ich kann nicht wirklich einen guten Ansatz finden.T-SQL - Lange Liste von Werten basierend auf der langen Liste von IDs aktualisieren

Ich habe eine lange Liste von IDs mit einer langen Liste Werte von entsprechenden für ein Feld zu aktualisieren (ein einzelnes Feld)

id = 1 | field = value_1 
id = 2 | field = value_2 
....................... 
id = n | field = value_n 

ich die Felder in 2 Listen i wählen (oder irgendeine andere Art und Weise setzen können to) aber ich muss durchlaufen und jeden Wert aktualisieren.

Was wäre der beste Ansatz dafür?

Um ein paar weitere Details hinzuzufügen: Die Werte sind in einem großen Excel, aber das ist nicht über die Verarbeitung, Excel, ich werde kopieren Sie die Liste der Werte in .. Text kopieren. Ich dachte 2 lange Liste (ID1, ID2, ..) (Wert_1, Wert_2, ...)

+0

Welchen Client verwenden Sie für diesen Zweck? Woher stammen diese Daten für das Update? –

+0

was wäre das Endergebnis – TheGameiswar

+0

Ich schreibe normalerweise ein Python-Skript, um diese Art von SQL dann copy-paste-run zu generieren. – Calvinxiao

Antwort

2

Für einen einmaligen Job, konvertieren Sie den Text in ein CSV oder ein anderes Format, das von bcp.exe verarbeitet werden kann, dann importieren Sie es in eine temporäre Tabelle, führen Sie die Aktualisierung über einen JOIN durch, und legen Sie die temporäre Tabelle ab.

Für einen wiederholbaren Job würde ich uns SSIS: flat file source die Daten oder sogar direkt Excel source, source the table, merge the two sources, wenden Sie das Ergebnis back into the table.

0

ist, was ich am Ende tat, habe ich eine temporäre Tabelle, die ich in sie alle Werte importiert und über eine

1

Die gewählte Antwort ist eine gute Methode beitreten aktualisiert, aber der Vollständigkeit halber: wenn dies a Einmalige Aufgabe, und die Updates folgen einem einfachen Muster wie diesem, es kann auch effektiv sein, den Eingabetext direkt in eine Reihe von Update-Anweisungen zu konvertieren, eine Excel-Formel zu verwenden und die Replace-Funktion eines Texteditors auszufüllen.

Beispiel:

id  newvalue 
1  foo 
2  grok 

wird

id  newvalue generated statement 
1  foo   update dbo.mytable set field1 = 'foo' where id = 1 
2  grok  update dbo.mytable set field1 = 'grok' where id = 2 

Schnell und schmutzig, aber mit Vorsicht anzuwenden und für unerwartete Syntaxfehler achten.

Verwandte Themen