2013-10-30 12 views
7

Chcę zbiorczo wstawić kolumny pliku csv do określonych kolumn tabeli docelowej. Opis - tabela docelowa ma więcej kolumn niż mój plik CSV. Tak więc chcę, aby kolumny pliku csv trafiały do ​​właściwych kolumn docelowych za pomocą BULK INSERT.BULK INSERT w określonych kolumnach?

Czy to możliwe? Jeśli tak, to jak mam to zrobić?

Widziałem tutorial i kod na - 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/

i http://www.codeproject.com/Articles/439843/Handling-BULK-Data-insert-from-CSV-to-SQL-Server

BULK INSERT dbo.TableForBulkData 
FROM 'C:\BulkDataFile.csv' 
WITH 
(
FIELDTERMINATOR = ',', 
ROWTERMINATOR = '\n' 
) 

nie wykazują, w jaki sposób można kontrolować, gdzie jest włożona danych.

+0

Pytania wymagające kodu muszą wykazywać minimalne zrozumienie problemu, który jest rozwiązywany. Uwzględnij ** próby rozwiązań **, ** dlaczego nie działają ** i oczekiwane wyniki. – showdev

+0

Co masz na myśli, wstawiając kolumny? nie chcesz wszystkich danych? Powinieneś pokazać, co masz i co dokładnie chcesz z tym zrobić. –

+0

Będziesz musiał skorzystać z pliku formatu. –

Odpowiedz

8

Tak, możesz to zrobić. Najprostszym sposobem jest utworzenie widoku z tabeli docelowej, zawierającego listę kolumn, do których dane mają zostać przesłane, w kolejności, w jakiej pojawiają się w pliku źródłowym. Następnie BULK INSERT do widoku zamiast bezpośrednio do tabeli.

+0

Wow! Jak to działa ? Czy faktycznie przeniesie dane z mojego pliku csv do prawdziwej tabeli, jeśli zastąpię mytable myview w powyższym kodzie? – Steam

+0

Yup. Rzeczywiście. – RBarryYoung

+0

Dzięki. Po zbadaniu wszystkich opcji jestem sfrustrowany. Idę z C# i trochę ssis. Przechodzę do instrukcji SQL zamiast plików CSV. Dziękuję za pokazanie mi tego alternatywnego sposobu. Jest statyczny, ale dobrze wiedzieć. – Steam