فایل CSV چیست؟
فایلهای با پسوند csv. (مقادیر جدا شده با کاما) فایلهای متنی ساده را نشان میدهند که حاوی رکوردهایی از دادهها با مقادیر جدا شده با کاما هستند. هر خط در یک فایل CSV یک رکورد جدید از مجموعه رکوردهای موجود در فایل است. چنین فایل هایی زمانی ایجاد می شوند که انتقال داده ها از یک سیستم ذخیره سازی به سیستم دیگر در نظر گرفته شده باشد. از آنجایی که همه برنامه ها می توانند رکوردهای جدا شده با کاما را تشخیص دهند، وارد کردن چنین فایل های داده ای به پایگاه داده بسیار راحت انجام می شود. تقریباً همه برنامه های صفحه گسترده مانند Microsoft Excel یا OpenOffice Calc می توانند CSV را بدون تلاش زیاد وارد کنند. داده های وارد شده از چنین فایل هایی در سلول های یک صفحه گسترده برای نمایش به کاربر مرتب می شوند.
تاریخچه مختصر
در زیر برخی از حقایق سریع در مورد منشاء و تاریخچه فرمت فایل CSV آورده شده است.
1972 - کامپایلر IBM Fortran (سطح H گسترش یافته) آنها را تحت OS/360 پشتیبانی کرد
1978 - ورودی/خروجی هدایتشده لیست توسط FORTRAN 77 پشتیبانی شد که از کاما و فاصله برای جداکنندهها استفاده میکرد.
2005 - CSV با RFC4180 به عنوان یک نوع محتوای MIME استاندارد شد.
2013 - کمبودهای RFC4180 با توصیه W3C برطرف شد
2015 - W3C اولین پیش نویس توصیه ها را برای استانداردهای فراداده CSV ارائه کرد که به عنوان توصیه در دسامبر 2015 آغاز شد.
تبدیل فایل های CSV
با استفاده از برنامه هایی که می توانند این فایل ها را باز کنند، می توان فایل های CSV را به چندین فرمت فایل مختلف تبدیل کرد. برای مثال، مایکروسافت اکسل میتواند دادهها را از فرمت فایل CSV وارد کرده و در قالبهای فایل XLS، XLSX، PDF، TXT، XML و HTML ذخیره کند. به طور مشابه، سایر سرویسهای دسکتاپ و همچنین آنلاین، قابلیت صادر کردن فایلهای CSV به HTML، ODS و RTF را فراهم میکنند.
فرمت فایل CSV
فرمت فایل CSV مشخص است که در زیر RFC4180 مشخص شده است. هر فایلی را مطابق با CSV تعریف می کند اگر:
هر رکورد در یک خط جداگانه قرار دارد که با یک شکست خط (CRLF) مشخص شده است. مثلا:
- aaa,bbb,ccc CRLF
- zzz، yyyy، xxx CRLF
آخرین رکورد در فایل ممکن است دارای یک شکست خط پایان باشد یا نباشد. مثلا:
- aaa,bbb,ccc CRLF
- zzz، yyyy، xxx
ممکن است یک خط سرصفحه اختیاری به عنوان خط اول فایل با همان قالب خطوط رکورد معمولی ظاهر شود. این سرصفحه حاوی نامهای مربوط به فیلدهای موجود در فایل است و باید دارای همان تعداد فیلدهایی باشد که رکوردهای بقیه فایل وجود دارد (وجود یا عدم وجود خط سرصفحه باید از طریق پارامتر اختیاری “header” این نشان داده شود. نوع MIME). مثلا:
- فیلد_نام، نام_فیلد، نام_فیلد CRLF
- aaa,bbb,ccc CRLF
- zzz، yyyy، xxx CRLF
در هدر و هر رکورد، ممکن است یک یا چند فیلد وجود داشته باشد که با کاما از هم جدا شده اند. هر خط باید دارای همان تعداد فیلد در سراسر فایل باشد. فضاها بخشی از یک میدان محسوب می شوند و نباید آنها را نادیده گرفت. آخرین فیلد در رکورد نباید با کاما دنبال شود. مثلا:
- aaa,bbb,ccc
هر فیلد ممکن است در دو گیومه قرار گیرد یا نباشد (اما برخی از برنامه ها مانند مایکروسافت اکسل به هیچ وجه از دو نقل قول استفاده نمی کنند). اگر فیلدها با گیومه های دوتایی احاطه نشده باشند، ممکن است نقل قول های دوگانه در داخل فیلدها ظاهر نشوند. مثلا:\
- aaa، bbb، ccc CRLF
- zzz، yyyy، xxx
فیلدهای حاوی شکست خط (CRLF)، گیومه های دوتایی و کاما باید در دو گیومه محصور شوند. مثلا:
- aaa، b CRLF
- bb، ccc CRLF
- zzz، yyyy، xxx
اگر از دو نقل قول برای محصور کردن فیلدها استفاده می شود، باید از یک نقل قول دوگانه که در داخل یک فیلد ظاهر می شود، قبل از آن با یک نقل قول مضاعف دیگر فرار کرد. مثلا:
- aaa، bbb، ccc
با این حال، در پرتو استفاده مدرن، جداکننده فقط به کاما محدود نمی شود و می تواند نقطه ویرگول، تب یا فاصله نیز باشد. برنامه هایی مانند مایکروسافت اکسل گزینه ای را برای تعیین کاراکتر جداکننده برای وارد کردن رکوردها از یک فایل CSV ارائه می دهند.