CSV ํ์ผ์ ๊ตฌ๋ฌธ ๋ถ์ํ๋ ค๊ณ ํ๋๋ฐ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ํด๊ฒฐ์ฑ ์ผ๋ก ํด๋์ค ๋งต์ ๋ฑ๋กํ๋ ค๊ณ ์๋ํ์ง๋ง ๋์์ด๋์ง ์์ต๋๋ค.
์ด์ํ ์ ์ ๋ด ๋ก์ปฌ ์์คํ (Windows, .NET Core 2.2, ASP.NET Core 2.2.1)์์ ์๋ํ์ง๋ง ๋ด ํ๋ก๋์ ์์คํ (CentOS 7, .NET Core 2.2, ASP.NET Core 2.2)์์๋ ์๋ํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. 1) ๊ตฌ์ฑ์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํ๊ฒฝ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์๋ ์ด ์์ธ์ ๊ฐ๋ฅํ ์์ธ์ ๋ฌด์์ ๋๊น?
์คํ ์ถ์ :
CsvHelper.Expressions.ObjectRecordCreator.CreateCreateRecordDelegate(์ ํ ๋ ์ฝ๋ ์ ํ)์์
CsvHelper.Expressions.RecordCreator.GetCreateRecordDelegate(์ ํ ๋ ์ฝ๋ ์ ํ)์์
CsvHelper.Expressions.RecordCreator.Create T ์์
CsvHelper.CsvReader.GetRecords์์ T +MoveNext()
...
๋ฐฉ๊ธ ๋น์ทํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ์๋ฃจ์ ์ ์ฐพ๋์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ด์ ์์ธ์ด ๋ฌด์์ธ์ง ์์ ๋์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ๊ณต์ ํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ์ต๋๋ค.
์ ๊ฒฝ์ฐ์ ๋ฌธ์ ๋ ๊ตฌ๋ถ ๊ธฐํธ์์ต๋๋ค. ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ๋ช ์์ ์ผ๋ก ์ง์ ํ์ง ์์ผ๋ฉด CsvHelper๊ฐ ๋ก์ปฌ ๋ฌธํ๊ถ ์ค์ ์ ๊ธฐ๋ณธ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ๊ฐ์ต๋๋ค. Windows์ ๊ฒฝ์ฐ ์ธ๋ฏธ์ฝ๋ก ์ด์์ต๋๋ค. ๋ฐ๋ผ์ ํ์ผ์ด ์ธ๋ฏธ์ฝ๋ก ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Windows์์ ์ ๋๋ก ์๋ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ค๋ฅธ OS(์: Docker ์ปจํ ์ด๋์ Linux)๋ก ์ด๋ํ ๋ ๋ค๋ฅธ ๊ตฌ๋ถ ๊ธฐํธ(์: ์ผํ)๊ฐ ์ ์ฉ๋ ์ ์์ผ๋ฉฐ ๋ณธ ์์ธ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ฐ๋ผ์ ๊ฐ์ฅ ์์ ํ ์๋ฃจ์ ์ Configuration.Delimiter๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ๋ช ์์ ์ผ๋ก ์ง์ ํ๋ ๊ฒ์ ๋๋ค.
์, ์ ๊ฐ ํ์์ ๋ ๊ทธ ํด๊ฒฐ์ฑ ์ ์ธ๊ธํ๋ ๊ฒ์ ์์์ต๋๋ค. ๋ค ๋ฐ๋ก ๊ทธ ๋ฌธ์ ์์ต๋๋ค. ๋์์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
@rh78 ๊ทธ๋ฐ ๊ฒฝ์ฐ ์ด์๋ฅผ ๋ซ์์ผ ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ฐฉ๊ธ ๋น์ทํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ์๋ฃจ์ ์ ์ฐพ๋์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ด์ ์์ธ์ด ๋ฌด์์ธ์ง ์์ ๋์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ๊ณต์ ํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ์ต๋๋ค.
์ ๊ฒฝ์ฐ์ ๋ฌธ์ ๋ ๊ตฌ๋ถ ๊ธฐํธ์์ต๋๋ค. ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ๋ช ์์ ์ผ๋ก ์ง์ ํ์ง ์์ผ๋ฉด CsvHelper๊ฐ ๋ก์ปฌ ๋ฌธํ๊ถ ์ค์ ์ ๊ธฐ๋ณธ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ๊ฐ์ต๋๋ค. Windows์ ๊ฒฝ์ฐ ์ธ๋ฏธ์ฝ๋ก ์ด์์ต๋๋ค. ๋ฐ๋ผ์ ํ์ผ์ด ์ธ๋ฏธ์ฝ๋ก ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Windows์์ ์ ๋๋ก ์๋ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ค๋ฅธ OS(์: Docker ์ปจํ ์ด๋์ Linux)๋ก ์ด๋ํ ๋ ๋ค๋ฅธ ๊ตฌ๋ถ ๊ธฐํธ(์: ์ผํ)๊ฐ ์ ์ฉ๋ ์ ์์ผ๋ฉฐ ๋ณธ ์์ธ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ฐ๋ผ์ ๊ฐ์ฅ ์์ ํ ์๋ฃจ์ ์ Configuration.Delimiter๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ๋ช ์์ ์ผ๋ก ์ง์ ํ๋ ๊ฒ์ ๋๋ค.