Csvhelper: ๋กœ์ปฌ Windows ์‹œ์Šคํ…œ์ด ์•„๋‹ˆ๋ผ CentOS ์‹œ์Šคํ…œ์—์„œ "์œ ํ˜•์— ๋Œ€ํ•ด ๋งคํ•‘๋œ ๊ตฌ์„ฑ์›์ด ์—†์Šต๋‹ˆ๋‹ค."

์— ๋งŒ๋“  2019๋…„ 02์›” 12์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: JoshClose/CsvHelper

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๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

๋ฐฉ๊ธˆ ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์†”๋ฃจ์…˜์„ ์ฐพ๋Š”์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์›์ธ์ด ๋ฌด์—‡์ธ์ง€ ์•Œ์•„ ๋ƒˆ์œผ๋ฏ€๋กœ ์—ฌ๊ธฐ์— ๊ณต์œ ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ œ ๊ฒฝ์šฐ์˜ ๋ฌธ์ œ๋Š” ๊ตฌ๋ถ„ ๊ธฐํ˜ธ์˜€์Šต๋‹ˆ๋‹ค. ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด CsvHelper๊ฐ€ ๋กœ์ปฌ ๋ฌธํ™”๊ถŒ ์„ค์ •์˜ ๊ธฐ๋ณธ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Windows์˜ ๊ฒฝ์šฐ ์„ธ๋ฏธ์ฝœ๋ก ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŒŒ์ผ์ด ์„ธ๋ฏธ์ฝœ๋ก ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ Windows์—์„œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค๋ฅธ OS(์˜ˆ: Docker ์ปจํ…Œ์ด๋„ˆ์˜ Linux)๋กœ ์ด๋™ํ•  ๋•Œ ๋‹ค๋ฅธ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ(์˜ˆ: ์‰ผํ‘œ)๊ฐ€ ์ ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ณธ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ฐ€์žฅ ์•ˆ์ „ํ•œ ์†”๋ฃจ์…˜์€ Configuration.Delimiter๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„, ์ œ๊ฐ€ ํ’€์—ˆ์„ ๋•Œ ๊ทธ ํ•ด๊ฒฐ์ฑ…์„ ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค. ๋„ค ๋ฐ”๋กœ ๊ทธ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. ๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@rh78 ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ ์ด์Šˆ๋ฅผ ๋‹ซ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰