Dave, When moving data *between* postgresql databases, I rely on custom python scripts using psycopg2. A simple write loop inside a read loop and two connections usually does the trick.
rik. On Fri, Mar 22, 2019 at 9:59 AM Dave Caughey <caugh...@gmail.com> wrote: > Unfortunately, using simple SQL statements isn't an option when dealing > with multiple databases (e.g., moving records from a development > environment into a production system as per my proposed use case). > > Cheers, > Dave > > > On Fri, Mar 22, 2019 at 9:18 AM Calle Hedberg <calle.hedb...@gmail.com> > wrote: > >> Dave, >> >> You are talking about "copying" data from one table to another table in >> the same database, yes? >> >> For that use an INSERT INTO <destinationtable> (SELECT .....FROM >> sourcetable) query - it will provide most of the flexibility you need with >> regard to including/excluding columns, renaming, changing column order, etc. >> >> If you need to do several sequential manipulation steps on the data to be >> copied, it might be necessary to first insert the data into a temporary >> table, then do whatever manipulations necessary, before inserting the final >> result into the destination table (or if not absolutely necessary, at least >> easier - while advanced manipulation can be done in a single step, it might >> require advanced skills and a crystal clear understanding of the underlying >> processes, and doing it step by step can be safer/easier for us normal >> mortals...) >> >> Regards >> Calle >> >> On Fri, 22 Mar 2019 at 13:36, Dave Caughey <caugh...@gmail.com> wrote: >> >>> Sorry, for the basic question, but I'm not sure if there are bug(s) in >>> pgAdmin, or just that I'm clueless. (My money lies on the latter!) >>> >>> Imagine the scenario where you are adding a feature to a product that >>> requires adding some new rows to a configuration table, and as part of the >>> patch you need to replicate a bunch of record from your development >>> database to your production databases. >>> >>> You'd think there'd be a number of options, e.g., >>> >>> 1. After doing a "View/Edit..." | "Filter by", select the displayed >>> records, click "copy" to get them on to the clipboard, then go to the >>> production database, do a "View/Edit..." on the corresponding table, and >>> paste. But, in my case, I need my auto-sequenced "id" column to be omitted >>> (so it gets re-generated in the new table), so perhaps this isn't the right >>> choice. Even worse, over the years, my database tables (auto-created via >>> Hibernate used in a Java Servlet) no longer have the same column order. >>> (Question: is there no way that copy-and-paste between tables can consider >>> the column names so copying between (int id,int feature_id,text name) and >>> (int id,text name,int feature_id) is possible?) >>> >>> 2. Or, I could right-click on the table and use Import/Export..." >>> (Question: is there a way to filter the records that will get exported? >>> Or is there a way to trigger import/export on the results of a >>> "View/Edit..." | "Filter by"?). However, here the issue is the columns no >>> longer have the same order (e.g., (int,int,text) vs (int,text,int)) so >>> "Import/Export..." fails. (Question: Is that not what the "Header" toggle >>> is supposed to do? I see that enabling it during export *adds* a header >>> to the export files, but shouldn't enabling it during import cause it to be >>> used to identify the order?). This method has the attraction that I can >>> use the "Columns" tab to exclude one of the columns from my export (i.e., >>> my auto-sequenced "id" column). >>> >>> 3. Or, I could do a "Backup..." and then a corresponding "Restore..." , >>> but I noticed that there the generated file contains CREATE DATABASE bits >>> of code even though the "Include CREATE DATABASE" toggle in the Backup..." >>> dialog is set to "No" (Question: bug, or my misunderstanding?). But I'm >>> guessing that a backup/restore will generally do a complete and utter >>> restore, rather than just moving some data. >>> >>> 4. Other options? >>> >>> So, what is the best/simplest way to copy data between tables, given the >>> possibility that some/all might apply? >>> >>> - The columns may be in a different order in different databases >>> - One column might need be left blank >>> - I only want to copy some of the records >>> >>> Cheers, >>> Dave >>> >> >> >> -- >> >> *Carl-Anders (Calle) Hedberg* >> >> HISP >> >> Researcher & Technical Specialist >> >> Health Information Systems Programme – South Africa >> >> Cell: +47 41461011 (Norway) >> >> Iridium SatPhone: +8816-315-19119 (usually OFF) >> >> E-mail1: ca...@hisp.org >> >> E-mail2: calle.hedb...@gmail.com >> >> Skype: calle_hedberg >> >