{"id":4462,"date":"2018-01-18T13:42:38","date_gmt":"2018-01-18T21:42:38","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=4462"},"modified":"2023-06-13T23:54:06","modified_gmt":"2023-06-14T06:54:06","slug":"csv-migrating-couchbase-relational","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/","title":{"rendered":"CSV tooling for migrating to Couchbase from Relational"},"content":{"rendered":"<div class=\"paragraph\">\n<p>CSV (Comma-seperated values) is a file format that can be exported from a relational database (like Oracle or SQL Server). It can then be imported into Couchbase Server with the <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/tools\/cbimport.html\">cbimport<\/a> utility.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><em>Note: cbimport comes with Couchbase Enterprise Edition. For Couchbase Community Edition, you can use the more limited <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/cli\/cbtransfer-tool.html\">cbtransfer<\/a> tool or go with <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/cli\/cbdocloader-tool.html\">cbdocloader<\/a> if JSON is an option.<\/em><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>A straight relational&#8594;CSV&#8594;Couchbase ETL probably isn&#8217;t going to be the complete solution for data migration. In a later post, I&#8217;ll write about data modeling decisions that you&#8217;ll have to consider. But it&#8217;s a starting point: consider this data as &#8220;staged&#8221;.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><em>Note: for this post, I&#8217;m using SQL Server and a Couchbase Server cluster, both installed locally. The steps will be similar for SQL Server, Oracle, MySQL, PostgreSQL, etc.<\/em><\/p>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_export_to_csv\">Export to CSV<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>The first thing you need to do is export to CSV. I have a relational database with two tables: Invoices and InvoiceItems.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/01\/09501-relational-tables.png\" alt=\"Relational tables example\"><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>I&#8217;m going to export the data from these two tables into two CSV files. With SQL Server Management Studio, this can be done a number of different ways. You can use <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/tools\/sqlcmd-utility\">sqlcmd<\/a> or <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/tools\/bcp-utility\">bcp<\/a> at the command line. Or you can use Powershell&#8217;s <a href=\"https:\/\/docs.microsoft.com\/en-us\/powershell\/module\/sqlserver\/invoke-sqlcmd?view=sqlserver-ps\"><code>Invoke-Sqlcmd<\/code><\/a> and pipe it through <code>Export-Csv<\/code>. You can also use the SQL Server Management Studio UI.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/01\/09504-export-csv-with-UI.png\" alt=\"Export CSV from SQL Server Management Studio\"><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Other relational databases will have command line utilities, UI tools, etc to export CSV.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Here is an example of a CSV export from a table called &#8220;Invoices&#8221;:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code>Id,InvoiceNum,InvoiceDate,BillTo,ShipTo\r\n1,ABC123,2018-01-15 00:00:00.000,Lynn Hess,\"Herman Trisler, 4189 Oak Drive\"\r\n2,XYZ987,2017-06-23 00:00:00.000,Yvonne Pollak,\"Clarence Burton, 1470 Cost Avenue\"\r\n3,FOO777,2018-01-02 00:00:00.000,Phillip Freeman,\"Ronda Snell, 4685 Valley Lane\"<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Here&#8217;s an export from a related table called &#8220;InvoiceItems&#8221;:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code>InvoiceId,Product,Quantity,Price\r\n1,Tire,2,20.00\r\n1,Steering Wheel,5,10.00\r\n1,Engine Oil,10,15.00\r\n1,Brake Pad,24,1000.00\r\n2,Mouse pad,1,3.99\r\n2,Mouse,1,14.99\r\n2,Computer monitor,1,199.98\r\n3,Cupcake,12,.99\r\n3,Birthday candles,1,.99\r\n3,Delivery,1,30.00<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_load_csv_into_couchbase\">Load CSV into Couchbase<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Let&#8217;s import these into a Couchbase bucket. I&#8217;ll assume you&#8217;ve already created an empty bucket named &#8220;staging&#8221;.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>First, let&#8217;s import invoices.csv.<\/p>\n<\/div>\n<div class=\"sect2\">\n<h3 id=\"_loading_invoices\">Loading invoices<\/h3>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-Powershell\">C:\\Program Files\\Couchbase\\Server\\bin\\cbimport csv -c localhost -u Administrator -p password -b staging -d file:\/\/invoices.csv --generate-key invoice::%Id%<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p><em>Note: with Linux\/Mac, instead of <code>C:\\Program Files\\Couchbase\\Server\\bin<\/code>, the path will be different.<\/em><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Let&#8217;s break this down:<\/p>\n<\/div>\n<div class=\"ulist\">\n<ul>\n<li>\n<p><strong>cbimport<\/strong>: This is the command line utility you&#8217;re using<\/p>\n<\/li>\n<li>\n<p><strong>csv<\/strong>: We&#8217;re importing from a CSV file. You can also import from JSON files.<\/p>\n<\/li>\n<li>\n<p><strong>-c localhost<\/strong>: The location of your Couchbase Server cluster.<\/p>\n<\/li>\n<li>\n<p><strong>-u Administrator -p password<\/strong>: Credentials for your cluster. Hopefully you have more secure credentials than this example!<\/p>\n<\/li>\n<li>\n<p><strong>-b staging<\/strong>: The name of the Couchbase bucket you want the data to end up in<\/p>\n<\/li>\n<li>\n<p><strong>&#8211;generate-key invoice::%Id%<\/strong> The template that will be used to create unique keys in Couchbase. Each line of the CSV will correspond to a single document. Each document needs a unique key. I decided to use the primary key (integer) with a prefix indicating that it&#8217;s an invoice document.<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<div class=\"paragraph\">\n<p>The end result of importing a 3 line file is 3 documents:<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/01\/09502-csv-documents-imported-to-couchbase.png\" alt=\"CSV documents imported into Couchbase\"><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>At this point, the staging bucket <em>only<\/em> contains invoice documents, so you may want to perform transformations now. I may do this in later modeling examples, but for now let&#8217;s move on to the next file.<\/p>\n<\/div>\n<\/div>\n<div class=\"sect2\">\n<h3 id=\"_loading_invoice_items\">Loading invoice items<\/h3>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-Powershell\">C:\\Program Files\\Couchbase\\Server\\bin\\cbimport csv -c localhost -u Administrator -p password -b staging -d file:\/\/invoice_items.csv --generate-key invoiceitem::#UUID#<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>This is nearly identical to the last import. One difference is that it&#8217;s a new file (invoice_items.csv). But the most important difference is <strong>&#8211;generate&#8212;&#8203;key<\/strong>. These records only contain foreign keys, but each document in Couchbase must have a unique key. Ultimately, we may decide to <em>embed<\/em> these records into their parent Invoice documents. But for now I decided to use UUID to generate unique keys for the records.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>The end result of importing this 10 line file is 10 more documents:<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/01\/09503-more-csv-documents-imported-to-couchbase.png\" alt=\"More CSV documents imported into Couchbase\"><\/span><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_what_s_next\">What&#8217;s next?<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Once you have a CSV file, it&#8217;s very easy to get data into Couchbase. However, this sort of direct translation is often not going to be enough on its own. I&#8217;ve explored some aspects of data modeling in a <a href=\"https:\/\/www.couchbase.com\/blog\/moving-from-sql-server-to-couchbase-part-1-data-modeling\/\">previous blog post on migrating from SQL Server<\/a>, but I will revisit this Invoices example in a refresher blog post soon.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>In the meantime, be sure to check out <a href=\"https:\/\/www.couchbase.com\/comparing-couchbase-vs-oracle\/\">How Couchbase Beats Oracle<\/a> for more information on why companies are replacing Oracle for certain use cases. And also take a look at the <a href=\"https:\/\/resources.couchbase.com\/c\/relational-no-sql-wp?x=Y7B0ca\">Moving from Relational to NoSQL: How to Get Started<\/a> white paper.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>If you have any questions or comments, please feel free to leave them here, contact me on <a href=\"https:\/\/twitter.com\/mgroves\">Twitter @mgroves<\/a>, or ask your question in the <a href=\"https:\/\/www.couchbase.com\/forums\/\">Couchbase Forums<\/a>.<\/p>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>CSV (Comma-seperated values) is a file format that can be exported from a relational database (like Oracle or SQL Server). It can then be imported into Couchbase Server with the cbimport utility. Note: cbimport comes with Couchbase Enterprise Edition. For [&hellip;]<\/p>\n","protected":false},"author":71,"featured_media":4464,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816],"tags":[1614,1592,1857,1556],"ppma_author":[8937],"class_list":["post-4462","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","tag-csv","tag-oracle","tag-relational","tag-sql-server"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>CSV tooling for migrating to Couchbase from Relational - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"CSV can be exported from a relational database (e.g. Oracle, SQL Server). It can then be imported into Couchbase Server with cbimport.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CSV tooling for migrating to Couchbase from Relational\" \/>\n<meta property=\"og:description\" content=\"CSV can be exported from a relational database (e.g. Oracle, SQL Server). It can then be imported into Couchbase Server with cbimport.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-01-18T21:42:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-14T06:54:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/01\/095-hero-etl-data-migration-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"288\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Matthew Groves\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mgroves\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Groves\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/\"},\"author\":{\"name\":\"Matthew Groves\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\"},\"headline\":\"CSV tooling for migrating to Couchbase from Relational\",\"datePublished\":\"2018-01-18T21:42:38+00:00\",\"dateModified\":\"2023-06-14T06:54:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/\"},\"wordCount\":697,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/095-hero-etl-data-migration-1.png\",\"keywords\":[\"csv\",\"oracle\",\"relational\",\"SQL Server\"],\"articleSection\":[\"Couchbase Server\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/\",\"name\":\"CSV tooling for migrating to Couchbase from Relational - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/095-hero-etl-data-migration-1.png\",\"datePublished\":\"2018-01-18T21:42:38+00:00\",\"dateModified\":\"2023-06-14T06:54:06+00:00\",\"description\":\"CSV can be exported from a relational database (e.g. Oracle, SQL Server). It can then be imported into Couchbase Server with cbimport.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/095-hero-etl-data-migration-1.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/095-hero-etl-data-migration-1.png\",\"width\":1024,\"height\":288,\"caption\":\"ETL diagram by JakobVoss licensed through Creative Commons 3.0 https:\/\/commons.wikimedia.org\/wiki\/File:Etl-process.svg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CSV tooling for migrating to Couchbase from Relational\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\",\"name\":\"Matthew Groves\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"caption\":\"Matthew Groves\"},\"description\":\"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.\",\"sameAs\":[\"https:\/\/crosscuttingconcerns.com\",\"https:\/\/x.com\/mgroves\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/matthew-groves\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"CSV tooling for migrating to Couchbase from Relational - The Couchbase Blog","description":"CSV can be exported from a relational database (e.g. Oracle, SQL Server). It can then be imported into Couchbase Server with cbimport.","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:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/","og_locale":"en_US","og_type":"article","og_title":"CSV tooling for migrating to Couchbase from Relational","og_description":"CSV can be exported from a relational database (e.g. Oracle, SQL Server). It can then be imported into Couchbase Server with cbimport.","og_url":"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/","og_site_name":"The Couchbase Blog","article_published_time":"2018-01-18T21:42:38+00:00","article_modified_time":"2023-06-14T06:54:06+00:00","og_image":[{"width":1024,"height":288,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/01\/095-hero-etl-data-migration-1.png","type":"image\/png"}],"author":"Matthew Groves","twitter_card":"summary_large_image","twitter_creator":"@mgroves","twitter_misc":{"Written by":"Matthew Groves","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/"},"author":{"name":"Matthew Groves","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58"},"headline":"CSV tooling for migrating to Couchbase from Relational","datePublished":"2018-01-18T21:42:38+00:00","dateModified":"2023-06-14T06:54:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/"},"wordCount":697,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/095-hero-etl-data-migration-1.png","keywords":["csv","oracle","relational","SQL Server"],"articleSection":["Couchbase Server"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/","url":"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/","name":"CSV tooling for migrating to Couchbase from Relational - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/095-hero-etl-data-migration-1.png","datePublished":"2018-01-18T21:42:38+00:00","dateModified":"2023-06-14T06:54:06+00:00","description":"CSV can be exported from a relational database (e.g. Oracle, SQL Server). It can then be imported into Couchbase Server with cbimport.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/095-hero-etl-data-migration-1.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/095-hero-etl-data-migration-1.png","width":1024,"height":288,"caption":"ETL diagram by JakobVoss licensed through Creative Commons 3.0 https:\/\/commons.wikimedia.org\/wiki\/File:Etl-process.svg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/csv-migrating-couchbase-relational\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"CSV tooling for migrating to Couchbase from Relational"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58","name":"Matthew Groves","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54","url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","caption":"Matthew Groves"},"description":"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.","sameAs":["https:\/\/crosscuttingconcerns.com","https:\/\/x.com\/mgroves"],"url":"https:\/\/www.couchbase.com\/blog\/author\/matthew-groves\/"}]}},"authors":[{"term_id":8937,"user_id":71,"is_guest":0,"slug":"matthew-groves","display_name":"Matthew Groves","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","author_category":"","last_name":"Groves","first_name":"Matthew","job_title":"","user_url":"https:\/\/crosscuttingconcerns.com","description":"Matthew D. Groves is a guy who loves to code.  It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything.  He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s.  He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community.  He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4462","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=4462"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4462\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/4464"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=4462"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=4462"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=4462"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=4462"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}