{"id":25846,"date":"2025-07-14T12:15:35","date_gmt":"2025-07-14T09:15:35","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/"},"modified":"2025-07-14T12:15:35","modified_gmt":"2025-07-14T09:15:35","slug":"postgresql-how-to-upsert-multiple-rows-ceviri","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/","title":{"rendered":"PostgreSQL: How to Upsert Multiple Rows (\u00c7eviri)"},"content":{"rendered":"<p># PostgreSQL&#8217;de \u00c7oklu Sat\u0131r Upsert Nas\u0131l Yap\u0131l\u0131r?<\/p>\n<p>PostgreSQL veritaban\u0131n\u0131zda veri g\u00fcncelleme i\u015flemlerini h\u0131zl\u0131 ve verimli bir \u015fekilde ger\u00e7ekle\u015ftirmek mi istiyorsunuz?  Tek tek sat\u0131r g\u00fcncellemeleri yerine, birden fazla sat\u0131r\u0131 ayn\u0131 anda g\u00fcncellemek veya eklemek, \u00f6zellikle b\u00fcy\u00fck veri k\u00fcmeleriyle \u00e7al\u0131\u015f\u0131rken performans a\u00e7\u0131s\u0131ndan b\u00fcy\u00fck avantaj sa\u011flar.  Bu makalede, PostgreSQL&#8217;de \u00e7oklu sat\u0131r upsert i\u015flemlerini ad\u0131m ad\u0131m, yeni ba\u015flayanlardan ileri seviye kullan\u0131c\u0131lara kadar herkesin anlayabilece\u011fi \u015fekilde a\u00e7\u0131klayaca\u011f\u0131z.  Veritaban\u0131 performans\u0131n\u0131 optimize etmenin yollar\u0131n\u0131 ve kar\u015f\u0131la\u015fabilece\u011finiz zorluklar\u0131 ele alaca\u011f\u0131z.<\/p>\n<p><strong>PostgreSQL Upsert \u0130\u015flemi Nedir?<\/strong><\/p>\n<p>Upsert, &#8220;update&#8221; ve &#8220;insert&#8221; kelimelerinin birle\u015fiminden t\u00fcretilmi\u015f bir terimdir.  Veritaban\u0131nda bir sat\u0131r\u0131n var olup olmad\u0131\u011f\u0131n\u0131 kontrol edip, varsa g\u00fcnceller, yoksa ekler.  Tek tek <code class=\"language-\">UPDATE<\/code> ve <code class=\"language-\">INSERT<\/code> sorgular\u0131 yazmak yerine, daha temiz ve verimli bir \u00e7\u00f6z\u00fcm sunar.  \u00d6zellikle, e\u015fsiz bir anahtar (primary key veya unique constraint) i\u00e7eren tablolarda \u00e7ok faydal\u0131d\u0131r.  Bu sayede, veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc korurken, gereksiz tekrarlardan ka\u00e7\u0131n\u0131l\u0131r.<\/p>\n<p><strong>PostgreSQL&#8217;de \u00c7oklu Sat\u0131r Upsert: \u00d6\u011frenme Yol Haritas\u0131<\/strong><\/p>\n<p>Bu b\u00f6l\u00fcmde, PostgreSQL&#8217;de \u00e7oklu sat\u0131r upsert i\u015flemlerini \u00f6\u011frenmek i\u00e7in ad\u0131m ad\u0131m bir yol haritas\u0131 sunuyoruz.<\/p>\n<p><strong># Yeni Ba\u015flayanlar \u0130\u00e7in: Temel Upsert \u0130\u015flemi<\/strong><\/p>\n<p>En basit upsert i\u015flemi, <code class=\"language-\">ON CONFLICT<\/code> deyimi kullan\u0131larak ger\u00e7ekle\u015ftirilir.  A\u015fa\u011f\u0131daki \u00f6rnekte, <code class=\"language-\">urunler<\/code> adl\u0131 bir tabloda \u00fcr\u00fcn bilgileri g\u00fcncelleniyor veya ekleniyor.  <code class=\"language-\">urun_id<\/code> s\u00fctunu e\u015fsiz bir anahtar olarak varsay\u0131lm\u0131\u015ft\u0131r.<\/p>\n<pre class=\"language-sql\"><code>INSERT INTO urunler (urun_id, urun_adi, fiyat)\nVALUES (1, 'Kitap', 25), (2, 'Kalem', 5), (3, 'Defter', 10)\nON CONFLICT (urun_id) DO UPDATE SET urun_adi = EXCLUDED.urun_adi, fiyat = EXCLUDED.fiyat;<\/code><\/pre>\n<p>Bu sorgu, <code class=\"language-\">urun_id<\/code> s\u00fctununa g\u00f6re \u00e7ak\u0131\u015fma kontrol\u00fc yapar.  E\u011fer bir <code class=\"language-\">urun_id<\/code> zaten mevcutsa, <code class=\"language-\">urun_adi<\/code> ve <code class=\"language-\">fiyat<\/code> s\u00fctunlar\u0131 <code class=\"language-\">EXCLUDED<\/code> tablosundaki de\u011ferlerle g\u00fcncellenir.  <code class=\"language-\">EXCLUDED<\/code> tablosunda, <code class=\"language-\">INSERT<\/code> sorgusunda girilen yeni veriler bulunur.  E\u011fer <code class=\"language-\">urun_id<\/code> mevcut de\u011filse, yeni bir sat\u0131r eklenir.<\/p>\n<p><strong># Orta Seviye: Ger\u00e7ek Hayatta Upsert \u00d6rne\u011fi ve Optimizasyon \u0130pu\u00e7lar\u0131<\/strong><\/p>\n<p>\u015eimdi, bir e-ticaret sitesindeki \u00fcr\u00fcn stok bilgilerini g\u00fcncelleme senaryosunu ele alal\u0131m.  \u00dcr\u00fcnler i\u00e7in bir <code class=\"language-\">stoklar<\/code> tablosu oldu\u011funu ve bu tablonun <code class=\"language-\">urun_id<\/code> ve <code class=\"language-\">stok_adedi<\/code> s\u00fctunlar\u0131n\u0131 i\u00e7erdi\u011fini varsayal\u0131m.  Yeni stok bilgileri, bir CSV dosyas\u0131ndan okunmaktad\u0131r.<\/p>\n<pre class=\"language-sql\"><code>COPY stoklar (urun_id, stok_adedi) FROM '\/path\/to\/stok_bilgileri.csv' DELIMITER ',' CSV HEADER;<\/code><\/pre>\n<p><code class=\"language-\">COPY<\/code> komutu, verileri h\u0131zl\u0131 bir \u015fekilde y\u00fckler.  Ancak,  <code class=\"language-\">ON CONFLICT<\/code> deyimini kullanarak <code class=\"language-\">COPY<\/code> ile birlikte upsert i\u015flemi yap\u0131lamaz. Bu durumda, \u00f6nce verileri ge\u00e7ici bir tabloya y\u00fckleyip, daha sonra <code class=\"language-\">ON CONFLICT<\/code> ile ana tabloya upsert i\u015flemi ger\u00e7ekle\u015ftirebiliriz.  Bu, b\u00fcy\u00fck veri k\u00fcmeleri i\u00e7in daha verimli olabilir. Ayr\u0131ca, indeksler performans\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir.  <code class=\"language-\">urun_id<\/code> s\u00fctununa bir indeks eklemek, <code class=\"language-\">ON CONFLICT<\/code> sorgusunun h\u0131z\u0131n\u0131 iyile\u015ftirir.<\/p>\n<pre class=\"language-sql\"><code>CREATE INDEX idx_stoklar_urun_id ON stoklar (urun_id);<\/code><\/pre>\n<p><strong># \u0130leri Seviye: Performans Analizi ve Edge Case&#8217;ler<\/strong><\/p>\n<p>\u00c7oklu sat\u0131r upsert i\u015flemlerinin performans\u0131n\u0131 analiz etmek i\u00e7in, <code class=\"language-\">EXPLAIN ANALYZE<\/code> komutunu kullanabilirsiniz. Bu komut, sorgunun y\u00fcr\u00fct\u00fclme plan\u0131n\u0131 ve her ad\u0131m\u0131n ne kadar s\u00fcrd\u00fc\u011f\u00fcn\u00fc g\u00f6sterir.  Performans sorunlar\u0131n\u0131 tespit etmek ve optimize etmek i\u00e7in bu bilgiyi kullanabilirsiniz.<\/p>\n<p>Baz\u0131 durumlarda, <code class=\"language-\">ON CONFLICT<\/code> deyiminin kullan\u0131m\u0131 her zaman en verimli yol olmayabilir.  \u00d6rne\u011fin, g\u00fcncellenecek s\u00fctun say\u0131s\u0131 \u00e7ok fazlaysa veya karma\u015f\u0131k g\u00fcncelleme mant\u0131\u011f\u0131 gerekiyorsa,  fonksiyonel indeksler veya stored procedure&#8217;lar daha uygun olabilir.  Ayr\u0131ca,  <code class=\"language-\">ON CONFLICT<\/code> deyimi, sadece e\u015fsiz bir k\u0131s\u0131tlamaya dayal\u0131 \u00e7ak\u0131\u015fma kontrol\u00fc yapar.  E\u011fer daha karma\u015f\u0131k \u00e7ak\u0131\u015fma ko\u015fullar\u0131 gerekiyorsa,  daha karma\u015f\u0131k sorgular yazman\u0131z gerekebilir.  Bu gibi durumlarda,  <code class=\"language-\">fatihsoysal.com<\/code> gibi kaynaklardan daha detayl\u0131 bilgi alabilirsiniz.<\/p>\n<p><strong>PostgreSQL&#8217;de \u00c7oklu Sat\u0131r Upsert: Uygulamal\u0131 K\u0131lavuz<\/strong><\/p>\n<p>Bu b\u00f6l\u00fcmde, farkl\u0131 senaryolar i\u00e7in pratik \u00f6rnekler ve kod bloklar\u0131 g\u00f6sterece\u011fiz.<\/p>\n<p><strong>PostgreSQL Upsert&#8217;te Performans Optimizasyonu<\/strong><\/p>\n<p>* <strong>\u0130ndeksler:<\/strong>  <code class=\"language-\">ON CONFLICT<\/code> kullan\u0131rken, ilgili s\u00fctunlara indeks eklemek performans\u0131 b\u00fcy\u00fck \u00f6l\u00e7\u00fcde art\u0131r\u0131r.<br \/>\n* <strong>Par\u00e7al\u0131 \u0130\u015flem:<\/strong> \u00c7ok b\u00fcy\u00fck veri k\u00fcmeleri i\u00e7in, verileri daha k\u00fc\u00e7\u00fck par\u00e7alara b\u00f6lerek i\u015flemeyi deneyin.<br \/>\n* <strong>Ge\u00e7ici Tablolar:<\/strong> B\u00fcy\u00fck veri y\u00fcklerken, verileri \u00f6nce ge\u00e7ici bir tabloya y\u00fckleyip, daha sonra ana tabloya upsert i\u015flemi yap\u0131n.<br \/>\n* <strong>Batch \u0130\u015flemleri:<\/strong>  Veritaban\u0131 istemciniz, bir seferde birden fazla upsert i\u015flemini g\u00f6nderebilir. Bu, a\u011f trafi\u011fini azalt\u0131r.<\/p>\n<p><strong>Ger\u00e7ek D\u00fcnya Senaryolar\u0131: Vaka Analizleri<\/strong><\/p>\n<p>* <strong>E-ticaret:<\/strong> \u00dcr\u00fcn kataloglar\u0131n\u0131 g\u00fcncelleme, stok seviyelerini de\u011fi\u015ftirme.<br \/>\n* <strong>Sosyal Medya:<\/strong> Kullan\u0131c\u0131 profillerini g\u00fcncelleme, yeni kullan\u0131c\u0131 ekleme.<br \/>\n* <strong>Finans:<\/strong> Hesap bakiyelerini g\u00fcncelleme, yeni i\u015flemler ekleme.<\/p>\n<p><strong>Sonu\u00e7<\/strong><\/p>\n<p>PostgreSQL&#8217;de \u00e7oklu sat\u0131r upsert i\u015flemleri, veritaban\u0131 verimlili\u011fini art\u0131rmak i\u00e7in g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r.  <code class=\"language-\">ON CONFLICT<\/code> deyimi, basit upsert i\u015flemleri i\u00e7in idealdir, ancak daha karma\u015f\u0131k senaryolar i\u00e7in performans optimizasyonu ve alternatif y\u00f6ntemler g\u00f6z \u00f6n\u00fcnde bulundurulmal\u0131d\u0131r.  Bu makalede verilen ad\u0131mlar\u0131 izleyerek, PostgreSQL veritaban\u0131n\u0131zda \u00e7oklu sat\u0131r upsert i\u015flemlerini g\u00fcvenli ve verimli bir \u015fekilde ger\u00e7ekle\u015ftirebilirsiniz.<\/p>\n<p><strong>S\u0131k\u00e7a Sorulan Sorular:<\/strong><\/p>\n<p>1. <strong><code class=\"language-\">EXCLUDED<\/code> nedir?<\/strong> <code class=\"language-\">INSERT<\/code> sorgusunda girilen yeni verileri i\u00e7eren sanal bir tablodur.<br \/>\n2. <strong>Upsert i\u015flemleri her zaman <code class=\"language-\">ON CONFLICT<\/code> ile mi yap\u0131lmal\u0131d\u0131r?<\/strong> Hay\u0131r, b\u00fcy\u00fck veri k\u00fcmeleri veya karma\u015f\u0131k g\u00fcncelleme mant\u0131\u011f\u0131 i\u00e7in alternatif y\u00f6ntemler daha verimli olabilir.<br \/>\n3. <strong>Upsert i\u015flemlerinde performans sorunlar\u0131yla nas\u0131l ba\u015fa \u00e7\u0131kabilirim?<\/strong> \u0130ndeksleme, par\u00e7al\u0131 i\u015flem, ge\u00e7ici tablolar ve batch i\u015flemleri kullanarak performans\u0131 optimize edebilirsiniz.<br \/>\n4. <strong>Hangi durumlarda stored procedure kullanmak daha mant\u0131kl\u0131d\u0131r?<\/strong> Karma\u015f\u0131k g\u00fcncelleme mant\u0131\u011f\u0131 veya \u00e7ok say\u0131da g\u00fcncellenecek s\u00fctun oldu\u011funda.<br \/>\n5. <strong>Upsert i\u015flemlerinde veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc nas\u0131l sa\u011flayabilirim?<\/strong> E\u015fsiz anahtarlar ve k\u0131s\u0131tlamalar kullanarak veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc koruyabilirsiniz.<\/p>\n<p>Yazar: Fatih Soysal<\/p>\n","protected":false},"excerpt":{"rendered":"# PostgreSQL&#8217;de \u00c7oklu Sat\u0131r Upsert Nas\u0131l Yap\u0131l\u0131r? PostgreSQL veritaban\u0131n\u0131zda veri g\u00fcncelleme i\u015flemlerini h\u0131zl\u0131 ve verimli bir \u015fekilde ger\u00e7ekle\u015ftirmek&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[644],"tags":[],"class_list":{"0":"post-25846","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-postgresql","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PostgreSQL: How to Upsert Multiple Rows (\u00c7eviri)<\/title>\n<meta name=\"description\" content=\"Hi\u00e7bir etiketi bulunamad\u0131.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL: How to Upsert Multiple Rows (\u00c7eviri)\" \/>\n<meta property=\"og:description\" content=\"Hi\u00e7bir etiketi bulunamad\u0131.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-14T09:15:35+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"PostgreSQL: How to Upsert Multiple Rows (\u00c7eviri)\",\"datePublished\":\"2025-07-14T09:15:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/\"},\"wordCount\":920,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"PostgreSQL\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/\",\"name\":\"PostgreSQL: How to Upsert Multiple Rows (\u00c7eviri)\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-07-14T09:15:35+00:00\",\"description\":\"Hi\u00e7bir etiketi bulunamad\u0131.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL: How to Upsert Multiple Rows (\u00c7eviri)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PostgreSQL: How to Upsert Multiple Rows (\u00c7eviri)","description":"Hi\u00e7bir etiketi bulunamad\u0131.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/","og_locale":"tr_TR","og_type":"article","og_title":"PostgreSQL: How to Upsert Multiple Rows (\u00c7eviri)","og_description":"Hi\u00e7bir etiketi bulunamad\u0131.","og_url":"https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-07-14T09:15:35+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"5 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"PostgreSQL: How to Upsert Multiple Rows (\u00c7eviri)","datePublished":"2025-07-14T09:15:35+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/"},"wordCount":920,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["PostgreSQL"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/","url":"https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/","name":"PostgreSQL: How to Upsert Multiple Rows (\u00c7eviri)","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-07-14T09:15:35+00:00","description":"Hi\u00e7bir etiketi bulunamad\u0131.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/postgresql-how-to-upsert-multiple-rows-ceviri\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL: How to Upsert Multiple Rows (\u00c7eviri)"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/25846","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=25846"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/25846\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=25846"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=25846"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=25846"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}