Bogusław Tymoniuk

Bogusław Tymoniuk starszy specjalista,
CSK UM

Temat: z csv do tabeli w MSSQL

Mam takie zagadnienie, potrzebuję wprowadzić dane z pliku .csv do kolumn w tabeli MSSQL wypełnionej danymi.
w bazie wygląda to w ten sposób:
sampleID............Name................ accession
CSK789/14 CSK789/14
CSK790/14 CSK790/14
CSK791/14 CSK791/14
CSK792/14 CSK792/14

z pliku .CSV muszę w kolumnę "name" wprowadzić "name" zamiast powtórzonej wartości z "sampleID" oraz uzupełnić kolumnę accession. Niestety sampleID powtarza się w tabeli kilkukrotnie i każdy wers muszę uzupełnić danymi jak powyżej. Czy ktoś może mi pomóc, jestem początkujący i poznaję dopiero MSSQL.
Tomasz Serwański

Tomasz Serwański Microsoft Dynamics
CRM - konsultant
biznesowy

Temat: z csv do tabeli w MSSQL

nie jestem pewien czy zrozumialem problem; sprobuj moze bardziej prostym jezykiem, niech nie bedzie watpliwosci o co chodzi
Bogusław Tymoniuk

Bogusław Tymoniuk starszy specjalista,
CSK UM

Temat: z csv do tabeli w MSSQL

W bazie MSSQL mam tabelę, która zawiera kilka kolumn, w jednej kolumnie "sampleID" mam wartości prawidłowo wypełnione, w następnej kolumnie "Name" zamiast nazwisk mam powtórzone dane z pierwszej kolumny, trzecia kolumna "accession" jest pusta. Ja muszę wprowadzić do kolumn "Name" i "accesssion" dane z pliku CSV, które odpowiadają wartościom kolumny "sampleID". Czyli jeżeli "sampleID" ma wartość CSK789/14 to w kolumnie "Name" muszę wprowadzić wartość Jan Kowalski, a w kolumnie "accession" wartość 01020304453. Wartości do uzupełnienia mam w pliku .CSV w trzech kolumnach sampleID, Name i accession, muszę je tak wprowadzić aby w każdym wersie w mojej bazie MSSQL wartościom w kolumnie sampleID odpowiadały wartości z kolumn Name i accession, które mam tylko w pliku .CSV.

konto usunięte

Temat: z csv do tabeli w MSSQL

Bogusław T.:
W bazie MSSQL mam tabelę, która zawiera kilka kolumn, w jednej kolumnie "sampleID" mam wartości prawidłowo wypełnione, w następnej kolumnie "Name" zamiast nazwisk mam powtórzone dane z pierwszej kolumny, trzecia kolumna "accession" jest pusta. Ja muszę wprowadzić do kolumn "Name" i "accesssion" dane z pliku CSV, które odpowiadają wartościom kolumny "sampleID". Czyli jeżeli "sampleID" ma wartość CSK789/14 to w kolumnie "Name" muszę wprowadzić wartość Jan Kowalski, a w kolumnie "accession" wartość 01020304453. Wartości do uzupełnienia mam w pliku .CSV w trzech kolumnach sampleID, Name i accession, muszę je tak wprowadzić aby w każdym wersie w mojej bazie MSSQL wartościom w kolumnie sampleID odpowiadały wartości z kolumn Name i accession, które mam tylko w pliku .CSV.

cześć,

możesz spróbować bezpośrednio tj. za pomocą języka T-SQL wczytać ten plik dojakiejś tymczasowej tabeli - zgodnie z sugestia:
http://blog.sqlauthority.com/2008/02/06/sql-server-imp...

i następnie aktualizować wiersze w docelowej tabeli - np wykorzystując kursory bądź zwykłym poleceniem UPDATE

mniej więcej

UPDATE dbo.DOCELOWA
SET
name = (SELECT name from dbo.tymczasowa where DOCELOWA.sampleID = tymaczasowa.sampleID)



declare
@sampleID INT,
@name NVARCHAR(50)
DECLARE cr CURSOR FOR
SELECT sampleID, name FROM dbo.tymaczasowa

OPEN CR
FETCH NEXT FROM cr INTO @sampleID, @name

WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE dbo.DOCELOWA
SET
name = @name
WHERE
sampleID = @sampleID

FETCH NEXT FROM cr INTO @sampleID, @name
END

CLOSE CR
DEALLOCATE CR


pzdr,
m.Ten post został edytowany przez Autora dnia 02.11.16 o godzinie 14:11
Tomasz Serwański

Tomasz Serwański Microsoft Dynamics
CRM - konsultant
biznesowy

Temat: z csv do tabeli w MSSQL

Bogusław T.:
W bazie MSSQL mam tabelę, która zawiera kilka kolumn, w jednej kolumnie "sampleID" mam wartości prawidłowo wypełnione, w następnej kolumnie "Name" zamiast nazwisk mam powtórzone dane z pierwszej kolumny, trzecia kolumna "accession" jest pusta. Ja muszę wprowadzić do kolumn "Name" i "accesssion" dane z pliku CSV, które odpowiadają wartościom kolumny "sampleID". Czyli jeżeli "sampleID" ma wartość CSK789/14 to w kolumnie "Name" muszę wprowadzić wartość Jan Kowalski, a w kolumnie "accession" wartość 01020304453. Wartości do uzupełnienia mam w pliku .CSV w trzech kolumnach sampleID, Name i accession, muszę je tak wprowadzić aby w każdym wersie w mojej bazie MSSQL wartościom w kolumnie sampleID odpowiadały wartości z kolumn Name i accession, które mam tylko w pliku .CSV.
poczytaj o 'update .. where'; obawiam sie ze w zakresie o jakim piszesz nikt Ci nie poda jednej linii ktora u Ciebie zadziala, to raczej caly szereg czynnosci do wykonania, w dodatku mozliwych do wykonania na szereg sposobow
Bogusław Tymoniuk

Bogusław Tymoniuk starszy specjalista,
CSK UM

Temat: z csv do tabeli w MSSQL

No i udało się, może w trochę inny sposób, dziękuję za pomoc.

GO
-- Create table to insert data.
CREATE TABLE dbo.CSVTest
(ID INT, sampleID VARCHAR(40),
Name VARCHAR(40),
accession VARCHAR(11))
GO
-- Bulk Insert the data from csv file.
BULK INSERT dbo.CSVTest
FROM 'c:\temp\csvtest.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
--Check the content of the table.
SELECT *
FROM dbo.CSVTest
GO
--Drop the table to clean up database.
DROP TABLE dbo.CSVTest
GO

UPDATE p
SET
Name = al.Name,
accession = al.accession
from dbo.tbUSERProfile p
inner join dbo.CSVTest al on p.sampleID = al.sampleID

select p.*
from dbo.tbUSERProfile p
inner join dbo.CSVTest al on p.sampleID = al.sampleIDTen post został edytowany przez Autora dnia 03.11.16 o godzinie 08:08

Następna dyskusja:

[MSSQL] Automatyczne przeni...




Wyślij zaproszenie do