{"id":166,"date":"2019-09-30T22:21:12","date_gmt":"2019-09-30T19:21:12","guid":{"rendered":"http:\/\/www.potansif.com\/?p=166"},"modified":"2019-09-30T22:21:12","modified_gmt":"2019-09-30T19:21:12","slug":"dataset-to-csv-export","status":"publish","type":"post","link":"http:\/\/www.potansif.com\/?p=166","title":{"rendered":"Dataset to CSV Export"},"content":{"rendered":"<p>Zaman zaman, \u00e7o\u011fumuz veri taban\u0131ndaki bir tablodan bazen Excel, bazen de di\u011fer veritabanlar\u0131na veri aktarmak zorunda kalabiliyoruz. Genelde kullan\u0131c\u0131lar da bu tarz bir istekle bize gelebiliyor. \u00c7o\u011funlukla&nbsp;kullan\u0131c\u0131lar\u0131n ihtiyac\u0131, verileri Excel gibi programlara aktar\u0131p \u00fczerinde \u00e7al\u0131\u015fma yapmak oluyor. Kullan\u0131c\u0131lar\u0131n bu tarz isteklerini kar\u015f\u0131layacak bir \u00e7al\u0131\u015fmay\u0131 payla\u015fmak istedim.<br \/>\n<!--more--><br \/>\nA\u015fa\u011f\u0131da kodlar\u0131n\u0131 verdi\u011fim \u00e7al\u0131\u015fma, bir TDataSet nesnesinden t\u00fcretilmi\u015f olan t\u00fcm DataSet miras\u00e7\u0131s\u0131 nesnelerde rahatl\u0131kla kullan\u0131labilir. TUNIQuery, TUNITable, TADODataSet, TFDQuery, TCustomSQLDataSet, TSQLQuery, TVirtualTable, TVirtualQuery, TVirtualDataSet, TdxMemData, TCustomClientDataSet, TClientDataSet, TInternalSQLDataSet, TSimpleDataSet ve unuttu\u011fum di\u011ferleri bunlara \u00f6rnek verilebilir.<\/p>\n<p>Tabi bunu sa\u011flamak i\u00e7in (al\u0131\u015fkanl\u0131k oldu art\u0131k) Class Helper tekni\u011fini kulland\u0131m, dolay\u0131s\u0131yla (XE2 ve \u00f6ncesi idi &#8220;san\u0131r\u0131m&#8221;) eski Delphi s\u00fcr\u00fcmlerinde (en az\u0131ndan bu haliyle) \u00e7al\u0131\u015fmayabilir. \u015eayet \u00f6yleyse&nbsp;ExportToCSV prosed\u00fcr\u00fcn\u00fc a\u00e7\u0131\u011fa al\u0131p , prosed\u00fcr i\u00e7indeki Self ifadelerini de (&#8220;aDataSet: TDataSet&#8221; gibi) bir parametreye ba\u011flayabilirsiniz&#8230;<\/p>\n<p>CSV Format\u0131na gelecek olursak, &#8220;Comma Separated Values&#8221; kelimelerinin ba\u015f harfleri kullan\u0131larak isimlendirilmi\u015ftir. Bu dosyalar, virg\u00fclle ayr\u0131lm\u0131\u015f de\u011ferler i\u00e7eren bir dosyad\u0131r. En \u00fcst sat\u0131r\u0131nda ba\u015fl\u0131klar, devam\u0131nda ise metin ve say\u0131lar i\u00e7eren tablo \u015feklinde d\u00f6kme bir veri listesi yer al\u0131r. H\u00fccre ve sat\u0131r mant\u0131\u011f\u0131na uygundur. H\u00fccreler virg\u00fcl, noktal\u0131 virg\u00fcl veya tab karakteriyle, sat\u0131rlar ise #13#10 karakterleriyle&nbsp;birbirinden ayr\u0131labilir. Bu dosyalar daha \u00e7ok elektronik tablo verilerini&nbsp;bir programdan di\u011ferine kolayca aktarmak i\u00e7in kullan\u0131l\u0131r. CSV dosyalar\u0131, Excel&nbsp;ile veya lotus 123 gibi&nbsp;di\u011fer elektronik tablo programlar\u0131yla da kullan\u0131labilir. CSV dosyalar\u0131 sadece ham veri i\u00e7erdi\u011fi, h\u00fccreler aras\u0131nda bir ba\u011f kurulmad\u0131\u011f\u0131, grafiksel ve binary&nbsp;\u00f6\u011feleri bar\u0131nd\u0131rmayan bir yap\u0131s\u0131 olmas\u0131&nbsp;nedeniyle JSON, BSON, XML gibi&nbsp;di\u011fer veri aktar\u0131m t\u00fcrlerinden bu anlamda ayr\u0131\u015f\u0131r.<\/p>\n<pre><code>\/\/&nbsp;============================================= &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;\n\/\/ Author:&nbsp;U\u011fur PARLAYAN\n\/\/ Create Date:&nbsp;2015-04-15-1530\n\/\/ Description :&nbsp;Genel Helper Classlar\u0131n topland\u0131\u011f\u0131 birimdir...\n\/\/&nbsp;============================================= &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;\n\nunit Helpers_Data;\n\ninterface\n\nuses\n&nbsp; &nbsp;Data.DB &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ &nbsp;TBookmarks, TDataSet\n&nbsp;, System.SysUtils &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ &nbsp;TFileName, Format, FormatDateTime, QuotedString\n&nbsp;;\n\ntype\n&nbsp;TStringArray = array of string;\n&nbsp;TStringArrayHelper = record helper for TStringArray\n&nbsp; &nbsp;public\n&nbsp; &nbsp; &nbsp;function Ayracli(aAyrac: String): String;\n&nbsp; &nbsp; &nbsp;\/\/...\n&nbsp;end;\n&nbsp;{ DATABASE }\n&nbsp;TDataSetHelper = class helper for TDataSet\n&nbsp; &nbsp;public\n&nbsp; &nbsp; procedure ExportToCSV(aFileName: TFileName; const aEncoding: TEncoding; aAyrac: String = ';');\n&nbsp; &nbsp; \/\/...\n&nbsp;end;\n\nimplementation\n\nuses\n&nbsp; &nbsp;System.Variants \/\/ &nbsp;NULL fonksiyonu...\n&nbsp;, System.Classes &nbsp;\/\/ &nbsp;TStreamWriter\n&nbsp;;\n\n{ TStringArrayHelper }\n\nfunction TStringArrayHelper.Ayracli(aAyrac: String): String;\nvar\n&nbsp;I: Integer;\nbegin\n&nbsp;for I := Low(Self) to High(Self)\n&nbsp; do if &nbsp;(I &lt; High(Self) )\n&nbsp; &nbsp; &nbsp;then Result := Result + Self[I] + aAyrac\n&nbsp; &nbsp; &nbsp;else Result := Result + Self[I];\nend;\n\n{ TDataSetHelper }\n\n\nprocedure TDataSetHelper.ExportToCSV(aFileName: TFileName; const aEncoding: TEncoding; aAyrac: String = ';');\nvar\n&nbsp;I &nbsp; &nbsp; &nbsp; : Integer; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ Klasik genel saya\u00e7 de\u011fi\u015fkenimiz...\n&nbsp;Dosya &nbsp; : TStreamWriter; &nbsp; \/\/ UTF8 \u015feklinde BOMLU olarak kodlanacak olan dosyay\u0131 temsil eder...\n&nbsp;Imlec &nbsp; : TBookmark; &nbsp; &nbsp; &nbsp; \/\/ Kullan\u0131c\u0131, Datasetin hangi sat\u0131r\u0131nda bilgisini tutar...\n&nbsp;Hucre &nbsp; : TStringArray; &nbsp; &nbsp;\/\/ S\u00fctunlar\u0131, Fieldleri temsil eder...\n&nbsp;function TQ(aString: String): String;\n&nbsp;begin\n&nbsp; &nbsp;Result := format('\"%s\"', [aString.Trim]);\n&nbsp;end;\nbegin\n&nbsp;if (Self.Active = FALSE)\n&nbsp;or (Self.IsEmpty = TRUE) then Exit;\n&nbsp;Imlec := Self.Bookmark; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ Datasetin mevcut konumunu imle\u00e7 de\u011fi\u015fkenine al\u0131yoruz.\n&nbsp;Self.DisableControls; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ g\u00f6rsel senkronizasyonu devre d\u0131\u015f\u0131 b\u0131rak\u0131yoruz, b\u00f6ylece i\u015flemler daha h\u0131zl\u0131 ilerliyor...\n&nbsp;Self.First; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ En ba\u015ftaki kayda ge\u00e7iyoruz.\n&nbsp;try\n&nbsp; &nbsp;Dosya := TStreamWriter.Create(aFileName, False, aEncoding); &nbsp; \/\/ Parametreyi \"TEncoding.UTF8\" olarak verirseniz dosya UTF8 \u015feklinde kodlanacak ve \"BOMLU\" olarak olu\u015fturulacakt\u0131r...\n&nbsp; &nbsp;try\n&nbsp; &nbsp; &nbsp;SetLength(Hucre, Self.Fields.Count); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\/\/ dinamik bir dizi oldu\u011fu i\u00e7in bellekte alan tahsisi yap\u0131yoruz...\n&nbsp; &nbsp; &nbsp;for I := 0 to Self.Fields.Count - 1\n&nbsp; &nbsp; &nbsp;do &nbsp;Hucre[I] := TQ(Self.Fields[I].FieldName); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ alan ba\u015fl\u0131klar\u0131n\u0131 en tepeye \u00e7ekiyoruz.\n&nbsp; &nbsp; &nbsp;Dosya.WriteLine( Hucre.Ayracli( aAyrac ) ); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ Alanlar dizisinin her bir h\u00fccrenin \"ARASINA\" noktal\u0131 virg\u00fcl bas\u0131yor ve dosyam\u0131za tek sat\u0131r halinde \"S\u00dcTUN BA\u015eLIKLARINI\" yaz\u0131yoruz...\n&nbsp; &nbsp; &nbsp;while not Self.Eof do begin &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ T\u00fcm Dataseti ba\u015ftan sona tarayaca\u011f\u0131z...\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for I := 0 to Self.Fields.Count - 1 do begin &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\/\/ T\u00fcm s\u00fctunlar\u0131\/Alanlar\u0131 tek tek elden ge\u00e7irece\u011fiz...\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (Self.Fields[I].DataType\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;in [ ftByte &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ 8 bit tamsay\u0131\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; , ftShortint &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ 8 bit tamsay\u0131\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; , ftSmallint &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ 16 bit tamsay\u0131\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; , ftWord &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ 16 bir i\u015faretsiz tamsay\u0131\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; , ftInteger &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\/\/ 32 bit tamsay\u0131\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; , ftFloat &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\/\/ 32 bit Floating-point say\u0131sal\u0131\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; , ftAutoInc &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\/\/ 32 bit tamsay\u0131\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; , ftSingle &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ 32 bit i\u015faretsiz tamsay\u0131\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; , ftLongWord &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ 32 bit i\u015faretsiz tamsay\u0131\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; , ftCurrency &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ 80 bit Floating-point say\u0131sal\u0131\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; , ftBCD &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\/\/ 80 bit \/\/ BCD = Binary Coded Decimal\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; , ftLargeint &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ 64 bit i\u015faretsiz tamsay\u0131\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; , ftExtended &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ 80 bit\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/, ftFMTBcd &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ String gibi i\u015flenir...\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ])\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;then Dosya.Write( Self.Fields[I].AsString ) &nbsp; &nbsp; &nbsp; \/\/ Say\u0131sal verileri t\u0131rnak i\u00e7ine almadan yaz\u0131yoruz\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else begin\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (Self.Fields[I].IsBlob = TRUE)\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; then Dosya.Write( TQ('') ) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ CSV format\u0131 blob \/ binary datalar\u0131 desteklemez...\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else Dosya.Write( TQ(Self.Fields[I].AsString) ); &nbsp;\/\/ Metinsel ifadeler ve formatl\u0131 veriler t\u0131rnak i\u00e7ine al\u0131nmak zorunda (CSV format\u0131 gere\u011fi...)\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;\n\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if &nbsp;(I &lt; Self.FieldCount - 1)\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;then Dosya.Write( aAyrac ) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\/\/ H\u00fccrelerin aras\u0131n\u0131 a\u00e7\u0131yoruz\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else Dosya.WriteLine; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ Yeni bir sat\u0131ra ge\u00e7iyoruz...\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Self.Next; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\/\/ Sonraki recorda ge\u00e7iyoruz\n&nbsp; &nbsp; &nbsp;end;\n&nbsp; &nbsp;finally\n&nbsp; &nbsp; &nbsp;FreeAndNil(Dosya); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\/\/ Nihayetinde \u00c7\u00f6p\u00fcm\u00fcz\u00fc temizledik...\n&nbsp; &nbsp;end;\n&nbsp;finally\n&nbsp; &nbsp;if (Self.BookmarkValid(Imlec) = TRUE) then Self.GotoBookmark(Imlec); \/\/ Nihayetinde Datasetteki sat\u0131r pozisyonumuzu ilk buldu\u011fumuz yere geri \u00e7ektik...\n&nbsp; &nbsp;Self.EnableControls; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/ Nihayetinde G\u00f6rsel Senkronizasyonu yeniden a\u00e7t\u0131k\n&nbsp;end;\nend;\n\nend.<\/code><\/pre>\n<p>Kullan\u0131m\u0131 da \u015fu \u015fekildedir;<\/p>\n<pre><code>uses&nbsp;Helpers_Data;\n\n\/\/...\n\nDataSet.ExportToCSV ( 'C:\\EXPORTS\\TEST.CSV', TEncoding.UTF8, ';'&nbsp;);<\/code><\/pre>\n<p>UTF8 kodlamas\u0131n\u0131 kullanarak arap, kiril, japon alfabesi gibi farkl\u0131 karakter kodlar\u0131na sahip veri tipleri de d\u00fczg\u00fcn aktar\u0131lm\u0131\u015f olacakt\u0131r.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Zaman zaman, \u00e7o\u011fumuz veri taban\u0131ndaki bir tablodan bazen Excel, bazen de di\u011fer veritabanlar\u0131na veri aktarmak zorunda kalabiliyoruz. Genelde kullan\u0131c\u0131lar da bu tarz bir istekle bize gelebiliyor. \u00c7o\u011funlukla&nbsp;kullan\u0131c\u0131lar\u0131n ihtiyac\u0131, verileri Excel gibi programlara aktar\u0131p \u00fczerinde \u00e7al\u0131\u015fma yapmak oluyor. Kullan\u0131c\u0131lar\u0131n bu tarz isteklerini kar\u015f\u0131layacak bir \u00e7al\u0131\u015fmay\u0131 payla\u015fmak istedim.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[24,25,26,11,27],"class_list":["post-166","post","type-post","status-publish","format-standard","hentry","category-blog","tag-csv","tag-data","tag-export","tag-programlama","tag-tdataset"],"_links":{"self":[{"href":"http:\/\/www.potansif.com\/index.php?rest_route=\/wp\/v2\/posts\/166","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.potansif.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.potansif.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.potansif.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.potansif.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=166"}],"version-history":[{"count":1,"href":"http:\/\/www.potansif.com\/index.php?rest_route=\/wp\/v2\/posts\/166\/revisions"}],"predecessor-version":[{"id":167,"href":"http:\/\/www.potansif.com\/index.php?rest_route=\/wp\/v2\/posts\/166\/revisions\/167"}],"wp:attachment":[{"href":"http:\/\/www.potansif.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=166"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.potansif.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=166"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.potansif.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=166"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}