نرمافزار Excel برای کار روی دادههای بسیار زیاد طراحی شده و میتوانید جداولی شامل اطلاعات بسیار زیادی در آن ایجاد کنید اما مشکل محدودیت حجم فایل اکسل، گاهی جدی میشود. محدودیت تعداد ردیفها در یک ورکشیت اکسل، حدود ۱ میلیون است و تعداد ستونها هم حداکثر ۱ میلیون است. اگر اطلاعات شما بیش از این مقدار باشد، میتوانید فایل اکسل را به دو یا چند بخش تقسیم کنید.
در این مقاله به روش تقسیم کردن فایلهای CSV به چند بخش میپردازیم که برای کاربرانی که دیتای زیادی برای تحلیل دارند، مفید است.
گاهی مواقع حین تکمیل کردن لیستی از اسامی، ایمیلها و شمارهها با محدودیت روبرو میشویم و گاهی ممکن است فایلی دریافت کنیم که شامل بیش از ۱ میلیون ردیف است! در این صورت اولین راهکار این است که فایل را به چند بخش تقسیم کنیم. البته میتوان در برخی نرمافزارها با فایلهای CSV که ردیفها و ستونها بیشتر است، کار کرد اما در Excel مجموعهی آفیس مایکروسافت، محدودیتهای خاصی وجود دارد.
فایل CSV در حقیقت یک فایل متنی ساده است که سلولهای جدول با ویرگول یا کاما و ردیفها با ایجاد خط جدید در آن تعریف شدهاند.
نرمافزارهایی برای تقسیم فایل CSV به چند بخش
نرمافزارهای خاصی وجود دارد که فرآیند تقسیم کردن یک جدول عظیم به بخشهای کوچکتر را سریع و ساده انجام میدهند. در ادامه به دو مورد از این نرمافزارهای جالب اشاره میکنیم.
CSV Chunker
این نرمافزار رایگان و متن باز، قابلیت کار روی فایلهای بزرگ و تقسیم به چند بخش را در کمترین زمان ممکن دارد. به عنوان مثال اگر بخواهید فایلی با ۲۶۰ هزار ردیف را به ۱۰۶ بخش تقسیم کنید که هر یک ۲۵۰۰ ردیف دارد، تنها ۳ ثانیه زمان لازم است!
روش کار بسیار ساده است. ابتدا روی دکمهی Select File کلیک کنید و فایل اصلی را آدرسدهی کنید. سپس تعداد ردیفها در هر فایل را در فیلد Lines Per File تایپ کنید. در نهایت روی دکمهی Split کلیک کنید.
توجه کنید که اگر تیک گزینهی First Line is Header را بزنید، به این معنی است که اولین ردیف، ردیف عنوان است.
CSV Splitter
نرمافزار CSV Splitter هم با توجه به نامش، فایلهای CSV را تکهتکه یا Split میکند. این نرمافزار طراحی بهتری دارد و با سرعت بالایی فایلهای عظیم را به قطعههای کوچکتر تبدیل میکند. روش کار ساده است، میتوانید آدرس فایل را در فیلد Filename وارد کنید یا روی دکمهی ... کلیک کنید و آدرسدهی فایل اصلی را انجام بدهید.
قدم بعدی وارد کردن تعداد ردیفها در هر فایل کوچکتر است و در نهایت با کلیک روی Execute، فایل شما قطعهقطعه میشود.
در این نرمافزار هم میتوانید تیک گزینهی First row contains column header را بزنید تا اولین ردیف در نقش ردیف عنوان ستونها شناخته شود. باز زدن تیک گزینهی Include header in each new package ، ردیف عنوان در تمام فایلهای کوچکتر، به عنوان اولین ردیف جدول اضافه میشود.
تقسیم کردن فایلهای CSV بزرگ به بخشهای کوچکتر با دستورات cmd و فایل Batch
اگر اهل برنامهنویسی و استفاده از دستورات cmd باشید، بدون هیچ نرمافزاری میتوانید فایلهای متنی CSV را به قطعات کوچکتر تقسیم کنید.
روش کار بسیار ساده است اما برای راحتی بیشتر، میتوانید از دستورات زیر استفاده کنید. این دستورات را کپی کرده و در یک فایل متنی ساده که به کمک Notepad ایجاد کردهاید، پیست کنید.
@echo off
setlocal ENABLEDELAYEDEXPANSION
REM Edit this value to change the name of the file that needs splitting. Include the extension.
SET BFN=HCAHPSHospital.csv
REM Edit this value to change the number of lines per file.
SET LPF=2500
REM Edit this value to change the name of each short file. It will be followed by a number indicating where it is in the list.
SET SFN=HosptialSplitFile
REM Do not change beyond this line.
SET SFX=%BFN:~-3%
SET /A LineNum=0
SET /A FileNum=1
For /F "delims==" %%l in (%BFN%) Do (
SET /A LineNum+=1
echo %%l >> %SFN%!FileNum!.%SFX%
if !LineNum! EQU !LPF! (
SET /A LineNum=0
SET /A FileNum+=1 ) )
endlocal
Pause
و اما تغییراتی که میبایست در متن فوق بدهید:
- دستور SET BFN= به فایل اصلی و حجیم اشاره میکند. روبروی آن نام فایل CSV اصلی را قرار بدهید که طبعاً پسوند آن csv است.
- دستور SET LPF= به تعداد ردیفها در هر یک از قطعات کوچک اشاره میکند که برای مثال از عدد ۲۵۰۰ استفاده کردهایم.
- دستور SET SFN= نیز برای مشخص کردن نام فایلهای کوچکتر پیشبینی شده است. عبارت روبروی آن را به تناسب نیاز تغییر دهید.
پس از تغییرات در سه بخش موردبحث، از منوی File و گزینهی Save As برای ذخیره کردن فایل متنی استفاده کنید و آن را با پسوند BAT ذخیره کنید نه TXT که حالت پیشفرض است. میتوانید پس از ذخیره کردن فایل نیز نام آن را تغییر دهید و پسوند جدید BAT را برای آن در نظر بگیرید.
اکنون فایل bat را در کنار فایل CSV در یک فولدر قرار دهید و سپس روی آن دبلکلیک کنید. به این ترتیب ایجاد قطعههای کوچک شروع میشود و پس از مدتی فرآیند تکمیل میشود. سرعت این اسکریپت کمتر از دو نرمافزار معرفی شده است.
تقسیم فایل CSV به بخشهای کوچک با اسکریپت PowerShell
سرعت اجرای فایل Batch بسیار زیاد است اما روش سریعتر این است که از اسکریپت پاورشل در ویندوز ۱۰ استفاده کنید. به خصوص در این فرآیند خاص که تقسیم فایلی به چند بخش است، PowerShell سرعت عمل بیشتری دارد.
اسکریپت زیر ظرف مدت ۳ ثانیه، فایل CSV مثال ما که ۲۶۰ هزار ردیف دارد را به بخشهایی با ۲۵۰۰ ردیف تقسیم میکند. دقت کنید که آدرس فایل منبع که C:\Users\Gavin\Downloads\Hospital_Revised_Flatfiles\HCAHPSHospital.csv است را تغییر دهید و تعداد ردیفهای هر بخش که پس از آپشن ReadCount ذکر شده را به تناسب نیاز تغییر بدهید. در نهایت محل ذخیره شدن قطعات و نام فایلها را با ویرایش عبارت C:\Users\Gavin\Downloads\Hospital_Revised_Flatfiles\split\splitfile_$i.csv تغییر دهید. توجه کنید که بخش آخر نام فایلهای کوچک، _$i است که آندرلاین و یک عدد متغیر را در انتهای نام قطعات قرار میدهد. میتوانید این بخش را تغییر بدهید اما همواره به یک بخش متغیر یعنی $i نیاز دارید.
$i=0; Get-Content C:\Users\Gavin\Downloads\Hospital_Revised_Flatfiles\HCAHPSHospital.csv -ReadCount 2500 | %{$i++; $_ | Out-File C:\Users\Gavin\Downloads\Hospital_Revised_Flatfiles\split\splitfile_$i.csv}
این اسکریپت ساده را میتوانید در ابزار PowerShell ISE ویندوز ۱۰ تایپ کرده و اجرا کنید. برای دسترسی به این ابزار، در منوی استارت عبارت PowerShell ISE را سرچ کنید و روی اولین نتیجه کلیک کنید. پس از نمایان شدن پنجرهی ابزار PowerShell ISE، اسکریپت را پیست کنید و سپس روی دکمهی Run کلیک کنید و یا F5 را فشار دهید.
makeuseofسیارهی آیتی
فایلهای اسپیلیت شده csv.splitter کجا ذخیره میشن ؟
سلام
برای تیکه تیکه کردن از این نسخه استفاده کنید که Output file name داره و روشن چی به چیه. فقط هم 45 کیلوبایته:
https://sourceforge.net/projects/csvsplitter/
در مورد نرمافزاری که در این مقاله معرفی شده هم من تست کردم کنار فایلی که انتخاب کردیم ذخیره میشه. البته اگر محدودیت دسترسی وجود داشته باشه و با حساب ادمین لاگین نکرده باشید در ویندوز، طبعاً ممکنه نتونه فایلی ذخیره کنه. یا با دسترسی ادمین اجرا کنید یا فایل اجرایی رو در مسیر دیگری قرار بدید و اجراش کنید.