로컬 .csv 파일 (약 6MB, 130k 행)을 삽입해야합니다. 나는 C# 프로그램에서 파일을 열 필요가 각 행, 특별한 고려 사항 (각 필드 주위에 따옴표) 각 행을 삽입해야합니다.콘솔 응용 프로그램을 사용하여 CSV에서 SQL Server로 대량 데이터 삽입
DB에 삽입 한 적이 없기 때문에 가장 좋은 방법은 궁금합니다. 나는 DB에서 아래에 직접적으로 해왔지만 지금은 C# app 내에서 이것을 할 필요가있다. .csv 파일에서
BULK
INSERT CSVTest
FROM 'c:\csvtest.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
샘플 데이터는 아래에, 그리고 전 C#에서 DB에 삽입 할 때 따옴표를 제거하는 방법에 대한 약간의 손실입니다. C#에서 열 이름을 지정해야합니까, 아니면 T-SQL 쿼리와 비슷한 것을 삽입 할 수 있습니까?
Copyright (c) 2011 MaxMind Inc. All Rights Reserved.
"beginIp","endIp","beginIpNum","endIpNum","countryCode","countryName"
"1.0.0.0","1.0.0.255","16777216","16777471","AU","Australia"
"1.0.1.0","1.0.3.255","16777472","16778239","CN","China"
"1.0.4.0","1.0.7.255","16778240","16779263","AU","Australia"
그리고 첫 번째 2 줄에 대해서는 2 개의 reader.ReadLine();을 (를) 무시해야한다는 것을 알고 있습니다. C# newb에 대한 도움은 언제나 환영합니다! 필드는 .csv 파일에서 완전히 동일하므로 문제가되지 않습니다. 그냥 csv를 통해 큰 csv에서 SQL로 데이터를 삽입하는 쉬운 방법이 있는지 모르겠다. 미리 감사드립니다!
편집 : TGH의 예를 들어 링크를 제공 아름답게 심지어 따옴표 내에서 .CSV 필드를 가져옵니다
내가 지금 사용하고 무엇,. 이제 SQL 연결을 통해 삽입 만하면됩니다.
당신은하는 SqlCommand를 만들고 위에 정의 된 원시 SQL 문자열을 실행할 수 있습니다
using (TextFieldParser parser = new TextFieldParser(@"C:\StreamReadTest.csv"))
{
parser.SetDelimiters(new string[] { "," });
parser.HasFieldsEnclosedInQuotes = true;
// Skip over header line.
parser.ReadLine();
// Skip field descriptions line.
parser.ReadLine();
while (!parser.EndOfData)
{
string[] fields = parser.ReadFields();
foreach (var value in fields)
{
Console.WriteLine(value);
}
Console.WriteLine("\n");
Console.ReadKey();
}
}
OSQL 유틸리티를 사용하지 마십시오. – Darek
@Darek OSQL에 대해 들어 본 적이 없지만 [이 페이지] (https://msdn.microsoft.com/en-us/library/ms162806.aspx)에 "이 기능은 향후 SQL 버전에서 제거 될 것입니다 서버. 새 개발 작업에서는이 기능을 사용하지 말고 현재이 기능을 사용하는 응용 프로그램을 수정하려면 sqlcmd를 사용하십시오. 자세한 내용은 [sqlcmd] (https://msdn.microsoft.com/en-us/library)를 참조하십시오./ms162773.aspx) 유틸리티. " – GlennFromIowa