Re: Where do custom logs go?
Ha, whoops! `heroku logs` shows them just fine. I didn't notice that shows all the logs. Cool! Sorry for the list noise. -Mat On Fri, Dec 10, 2010 at 1:30 PM, Mat Schaffer wrote: > So my app uses a custom log (via Logger.new) that's writing to > Rails.root.join("log", "mylog.log"). > > The file seems to write just fine, but does this go anywhere I could see > it? Or it is at least not dangerous to do this? > > Thanks, > Mat > -- You received this message because you are subscribed to the Google Groups "Heroku" group. To post to this group, send email to her...@googlegroups.com. To unsubscribe from this group, send email to heroku+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/heroku?hl=en.
Re: Best way to DB import 1M+ rows?
Yeah, we're not too likely to build in some elaborate support for such a niche use-case when there are tons of really universally useful things to work on. Let us know how it goes and if you run into any big problems. Regards, Peter On Fri, Dec 10, 2010 at 12:35 PM, Zach Bailey wrote: > Thank you David and Peter for your awesome ideas. Reading back over the > postgres COPY command docs [1] it doesn't look like that would ever be a > feasible solution given the following stipulation: > > *Files named in a **COPY** command are read or written directly by the > server, not by the client application. Therefore, they must reside on or be > accessible to the database server machine, not the client. They must be > accessible to and readable or writable by the **PostgreSQL** user (the > user ID the server runs as), not the client. **COPY** naming a file is > only allowed to database superusers, since it allows reading or writing any > file that the server has privileges to access.* > > So, it looks like this is something Heroku would have to wrap into an > abstracted administrative function down the line, if they ever did it at > all, due to the super-user access requirement. > > Given that, the remaining options consist of a.) restoring a partial backup > or b.) doing raw inserts. > > a.) seems like it would be possible using a dedicated db + heroku > pg:ingress + pg_restore -a -t tablename > > b.) is of course possible via a variety of methods (rake task, REST API, > taps, etc) but unfortunately rather slow as there is a lot of overhead in > doing single inserts (when compared to writing table structure directly, > etc.) > > I'm thinking I'll give option (a) a try and see how it goes. > > -Zach > > [1] http://www.postgresql.org/docs/8.4/interactive/sql-copy.html > > On Friday, December 10, 2010 at 3:12 PM, David Dollar wrote: > > Another possible solution would be this: > > Upload your data in CSV/TSV/whatever form to S3. Write a rake task that > does the following: > > * download from S3 to RAILS_ROOT/tmp > * use the psql command line tool (it's on our dyno grid) or one of the > ActiveRecord bulk import extensions to read the file and import to your > database > > Then you can run it with "heroku rake my_import_task" > > If this is going to be a regular process, you'll likely want to wrap all of > this up as something you can run from a worker using DJ or its' ilk. > > On Dec 10, 2010, at 10:51 AM, Zach Bailey wrote: > > > Thanks John, that's a great suggestion. Unfortunately it's looking like it > will take about 7.5 hours to import 3.12M rows: > > 1 tables, 3,123,800 records > companies: 1% | | ETA: > 07:25:34 > > I'm wondering if there's a more expedient route... in the past I've used > the postgres COPY command [1] to do bulk imports of large data sets quickly, > but that requires that the server be able to read a file off the server's > local filesystem. I don't suppose that's feasible given how the Heroku > platform works, but would love to be pleasantly surprised :) > > Anyone from Heroku able to pipe up and offer any other possible > suggestions? Just to restate the problem, I have a single table with about > 3.12M records that I'm wanting to transfer from a local DB to my remote > Heroku DB without touching the other Heroku app data. It's ok if the table > gets blown away on the Heroku side as it has nothing in it (new model I just > added). > > Happy Friday, > Zach > > [1] http://www.postgresql.org/docs/8.4/interactive/sql-copy.html > > On Thursday, December 9, 2010 at 4:36 AM, johnb wrote: > > If it's just a single table and you have it in a db locally then db:push > --tables would get it up to heroku - but this will replace the > contents of the remote table with the local table and not append to it. If > the application is live you could put it into maintenance mode, db:pull > --tables append your rows to it and then push the table back and > put the app live... > > perhaps? > > John. > > -- > You received this message because you are subscribed to the Google Groups > "Heroku" group. > To post to this group, send email to her...@googlegroups.com. > To unsubscribe from this group, send email to > heroku+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/heroku?hl=en. > > > > -- > You received this message because you are subscribed to the Google Groups > "Heroku" group. > To post to this group, send email to her...@googlegroups.com. > To unsubscribe from this group, send email to > heroku+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/heroku?hl=en. > > > -- > You received this message because you are subscribed to the Google Groups > "Heroku" group. > To post to this group, send email to her...@googlegroups.com. > To unsubscribe from this group, send email to > heroku+unsubscr...@googlegroups.com. > For more options, visit this group at >
Re: Best way to DB import 1M+ rows?
Thank you David and Peter for your awesome ideas. Reading back over the postgres COPY command docs [1] it doesn't look like that would ever be a feasible solution given the following stipulation: Files named in a COPY command are read or written directly by the server, not by the client application. Therefore, they must reside on or be accessible to the database server machine, not the client. They must be accessible to and readable or writable by the PostgreSQL user (the user ID the server runs as), not the client. COPY naming a file is only allowed to database superusers, since it allows reading or writing any file that the server has privileges to access. So, it looks like this is something Heroku would have to wrap into an abstracted administrative function down the line, if they ever did it at all, due to the super-user access requirement. Given that, the remaining options consist of a.) restoring a partial backup or b.) doing raw inserts. a.) seems like it would be possible using a dedicated db + heroku pg:ingress + pg_restore -a -t tablename b.) is of course possible via a variety of methods (rake task, REST API, taps, etc) but unfortunately rather slow as there is a lot of overhead in doing single inserts (when compared to writing table structure directly, etc.) I'm thinking I'll give option (a) a try and see how it goes. -Zach [1] http://www.postgresql.org/docs/8.4/interactive/sql-copy.html On Friday, December 10, 2010 at 3:12 PM, David Dollar wrote: > Another possible solution would be this: > > > Upload your data in CSV/TSV/whatever form to S3. Write a rake task that does > the following: > > > * download from S3 to RAILS_ROOT/tmp > * use the psql command line tool (it's on our dyno grid) or one of the > ActiveRecord bulk import extensions to read the file and import to your > database > > > Then you can run it with "heroku rake my_import_task" > > > If this is going to be a regular process, you'll likely want to wrap all of > this up as something you can run from a worker using DJ or its' ilk. > > On Dec 10, 2010, at 10:51 AM, Zach Bailey wrote: > > > > > > > > Thanks John, that's a great suggestion. Unfortunately it's looking like it > > will take about 7.5 hours to import 3.12M rows: > > > > > > 1 tables, 3,123,800 records > > companies: 1% | | ETA: 07:25:34 > > > > > > I'm wondering if there's a more expedient route... in the past I've used > > the postgres COPY command [1] to do bulk imports of large data sets > > quickly, but that requires that the server be able to read a file off the > > server's local filesystem. I don't suppose that's feasible given how the > > Heroku platform works, but would love to be pleasantly surprised :) > > > > > > Anyone from Heroku able to pipe up and offer any other possible > > suggestions? Just to restate the problem, I have a single table with about > > 3.12M records that I'm wanting to transfer from a local DB to my remote > > Heroku DB without touching the other Heroku app data. It's ok if the table > > gets blown away on the Heroku side as it has nothing in it (new model I > > just added). > > > > Happy Friday, > > Zach > > > > > > > > [1] http://www.postgresql.org/docs/8.4/interactive/sql-copy.html > > > > On Thursday, December 9, 2010 at 4:36 AM, johnb wrote: > > > > > If it's just a single table and you have it in a db locally then db:push > > > --tables would get it up to heroku - but this will replace > > > the contents of the remote table with the local table and not append to > > > it. If the application is live you could put it into maintenance mode, > > > db:pull --tables append your rows to it and then push the > > > table back and put the app live... > > > > > > > > > perhaps? > > > > > > > > > John. > > > > > > > > > -- > > > You received this message because you are subscribed to the Google > > > Groups "Heroku" group. > > > To post to this group, send email to her...@googlegroups.com. > > > To unsubscribe from this group, send email to > > > heroku+unsubscr...@googlegroups.com. > > > For more options, visit this group at > > > http://groups.google.com/group/heroku?hl=en. > > > > > > > > > > > > > > > > > > > > > > > > > -- > > You received this message because you are subscribed to the Google Groups > > "Heroku" group. > > To post to this group, send email to her...@googlegroups.com. > > To unsubscribe from this group, send email to > > heroku+unsubscr...@googlegroups.com. > > For more options, visit this group at > > http://groups.google.com/group/heroku?hl=en. > > > > > > > > > -- > You received this message because you are subscribed to the Google Groups > "Heroku" group. > To post to this group, send email to her...@googlegroups.com. > To unsubscribe from this group, send email to > heroku+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/heroku?hl=en. >
Re: Best way to DB import 1M+ rows?
Another possible solution would be this: Upload your data in CSV/TSV/whatever form to S3. Write a rake task that does the following: * download from S3 to RAILS_ROOT/tmp * use the psql command line tool (it's on our dyno grid) or one of the ActiveRecord bulk import extensions to read the file and import to your database Then you can run it with "heroku rake my_import_task" If this is going to be a regular process, you'll likely want to wrap all of this up as something you can run from a worker using DJ or its' ilk. On Dec 10, 2010, at 10:51 AM, Zach Bailey wrote: > > Thanks John, that's a great suggestion. Unfortunately it's looking like it > will take about 7.5 hours to import 3.12M rows: > > 1 tables, 3,123,800 records > companies: 1% | | ETA: > 07:25:34 > > I'm wondering if there's a more expedient route... in the past I've used the > postgres COPY command [1] to do bulk imports of large data sets quickly, but > that requires that the server be able to read a file off the server's local > filesystem. I don't suppose that's feasible given how the Heroku platform > works, but would love to be pleasantly surprised :) > > Anyone from Heroku able to pipe up and offer any other possible suggestions? > Just to restate the problem, I have a single table with about 3.12M records > that I'm wanting to transfer from a local DB to my remote Heroku DB without > touching the other Heroku app data. It's ok if the table gets blown away on > the Heroku side as it has nothing in it (new model I just added). > > Happy Friday, > Zach > > [1] http://www.postgresql.org/docs/8.4/interactive/sql-copy.html > > On Thursday, December 9, 2010 at 4:36 AM, johnb wrote: > >> If it's just a single table and you have it in a db locally then db:push >> --tables would get it up to heroku - but this will replace the >> contents of the remote table with the local table and not append to it. If >> the application is live you could put it into maintenance mode, db:pull >> --tables append your rows to it and then push the table back and >> put the app live... >> >> perhaps? >> >> John. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Heroku" group. >> To post to this group, send email to her...@googlegroups.com. >> To unsubscribe from this group, send email to >> heroku+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/heroku?hl=en. > > > -- > You received this message because you are subscribed to the Google Groups > "Heroku" group. > To post to this group, send email to her...@googlegroups.com. > To unsubscribe from this group, send email to > heroku+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/heroku?hl=en. -- You received this message because you are subscribed to the Google Groups "Heroku" group. To post to this group, send email to her...@googlegroups.com. To unsubscribe from this group, send email to heroku+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/heroku?hl=en.
Re: Best way to DB import 1M+ rows?
Taps is really unsuitable for large data transfers. A psql console is the answer here, but it's only available on dedicated databases provisioned in the last few months. Having said that, you could: 1) add a dedicated ronin to your app ($200/mo billed hourly) 2) use the direct psql console to load the data in once the db comes online 3) use pgbackups addon to back up the data 4) restore the database to your shared database 5) remove the dedicated database It's a bit roundabout, but because the shared databases are on the old code they don't have access to the new features we're building for the databases these days. Bear in mind that if you are loading a large dataset in, for any kind of serious queries you're going to have what I will euphemistically call "variable" performance, but hey, the price is right. -p On Fri, Dec 10, 2010 at 10:51 AM, Zach Bailey wrote: > Thanks John, that's a great suggestion. Unfortunately it's looking like > it will take about 7.5 hours to import 3.12M rows: > > 1 tables, 3,123,800 records > companies: 1% | | ETA: > 07:25:34 > > I'm wondering if there's a more expedient route... in the past I've used > the postgres COPY command [1] to do bulk imports of large data sets quickly, > but that requires that the server be able to read a file off the server's > local filesystem. I don't suppose that's feasible given how the Heroku > platform works, but would love to be pleasantly surprised :) > > Anyone from Heroku able to pipe up and offer any other possible > suggestions? Just to restate the problem, I have a single table with about > 3.12M records that I'm wanting to transfer from a local DB to my remote > Heroku DB without touching the other Heroku app data. It's ok if the table > gets blown away on the Heroku side as it has nothing in it (new model I just > added). > > Happy Friday, > Zach > > [1] http://www.postgresql.org/docs/8.4/interactive/sql-copy.html > > On Thursday, December 9, 2010 at 4:36 AM, johnb wrote: > > If it's just a single table and you have it in a db locally then db:push > --tables would get it up to heroku - but this will replace the > contents of the remote table with the local table and not append to it. If > the application is live you could put it into maintenance mode, db:pull > --tables append your rows to it and then push the table back and > put the app live... > > perhaps? > > John. > > -- > You received this message because you are subscribed to the Google Groups > "Heroku" group. > To post to this group, send email to her...@googlegroups.com. > To unsubscribe from this group, send email to > heroku+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/heroku?hl=en. > > > -- > You received this message because you are subscribed to the Google Groups > "Heroku" group. > To post to this group, send email to her...@googlegroups.com. > To unsubscribe from this group, send email to > heroku+unsubscr...@googlegroups.com > . > For more options, visit this group at > http://groups.google.com/group/heroku?hl=en. > -- You received this message because you are subscribed to the Google Groups "Heroku" group. To post to this group, send email to her...@googlegroups.com. To unsubscribe from this group, send email to heroku+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/heroku?hl=en.
Re: Best way to DB import 1M+ rows?
If you have a dedicated database, you can use psql to read off the local filesystem. http://docs.heroku.com/heroku-postgresql#psql-console Alternatively, you can dump your data and then restore it. http://docs.heroku.com/pgbackups#import On Fri, Dec 10, 2010 at 10:51 AM, Zach Bailey wrote: > Thanks John, that's a great suggestion. Unfortunately it's looking like it > will take about 7.5 hours to import 3.12M rows: > 1 tables, 3,123,800 records > companies: 1% | | ETA: > 07:25:34 > I'm wondering if there's a more expedient route... in the past I've used the > postgres COPY command [1] to do bulk imports of large data sets quickly, but > that requires that the server be able to read a file off the server's local > filesystem. I don't suppose that's feasible given how the Heroku platform > works, but would love to be pleasantly surprised :) > Anyone from Heroku able to pipe up and offer any other possible suggestions? > Just to restate the problem, I have a single table with about 3.12M records > that I'm wanting to transfer from a local DB to my remote Heroku DB without > touching the other Heroku app data. It's ok if the table gets blown away on > the Heroku side as it has nothing in it (new model I just added). > Happy Friday, > Zach > > [1] http://www.postgresql.org/docs/8.4/interactive/sql-copy.html > > On Thursday, December 9, 2010 at 4:36 AM, johnb wrote: > > If it's just a single table and you have it in a db locally then db:push > --tables would get it up to heroku - but this will replace the > contents of the remote table with the local table and not append to it. If > the application is live you could put it into maintenance mode, db:pull > --tables append your rows to it and then push the table back and > put the app live... > perhaps? > John. > > -- > You received this message because you are subscribed to the Google Groups > "Heroku" group. > To post to this group, send email to her...@googlegroups.com. > To unsubscribe from this group, send email to > heroku+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/heroku?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Heroku" group. > To post to this group, send email to her...@googlegroups.com. > To unsubscribe from this group, send email to > heroku+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/heroku?hl=en. > -- You received this message because you are subscribed to the Google Groups "Heroku" group. To post to this group, send email to her...@googlegroups.com. To unsubscribe from this group, send email to heroku+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/heroku?hl=en.
Re: Best way to DB import 1M+ rows?
Thanks John, that's a great suggestion. Unfortunately it's looking like it will take about 7.5 hours to import 3.12M rows: 1 tables, 3,123,800 records companies: 1% | | ETA: 07:25:34 I'm wondering if there's a more expedient route... in the past I've used the postgres COPY command [1] to do bulk imports of large data sets quickly, but that requires that the server be able to read a file off the server's local filesystem. I don't suppose that's feasible given how the Heroku platform works, but would love to be pleasantly surprised :) Anyone from Heroku able to pipe up and offer any other possible suggestions? Just to restate the problem, I have a single table with about 3.12M records that I'm wanting to transfer from a local DB to my remote Heroku DB without touching the other Heroku app data. It's ok if the table gets blown away on the Heroku side as it has nothing in it (new model I just added). Happy Friday, Zach [1] http://www.postgresql.org/docs/8.4/interactive/sql-copy.html On Thursday, December 9, 2010 at 4:36 AM, johnb wrote: > If it's just a single table and you have it in a db locally then db:push > --tables would get it up to heroku - but this will replace the > contents of the remote table with the local table and not append to it. If > the application is live you could put it into maintenance mode, db:pull > --tables append your rows to it and then push the table back and > put the app live... > > > perhaps? > > > John. > > -- > You received this message because you are subscribed to the Google Groups > "Heroku" group. > To post to this group, send email to her...@googlegroups.com. > To unsubscribe from this group, send email to > heroku+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/heroku?hl=en. > > > > -- You received this message because you are subscribed to the Google Groups "Heroku" group. To post to this group, send email to her...@googlegroups.com. To unsubscribe from this group, send email to heroku+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/heroku?hl=en.
Re: Can't seem to install the Taps gem
If you're using rvm, you should never install gems using sudo, as rvm keeps its environment tied to your regular user account. Try "gem install taps" instead. Then, it should show up when you run "gems list" HTH, Zach On Thursday, December 9, 2010 at 7:47 AM, Jimmy wrote: > I'm trying to use Heroku's Taps gem to get my database from their > server. > > When I run $heroku db:pull it says I need to install the Taps gem > using the command: > > sudo gem install taps > > I run this command, and as expected, Taps says it has installed ("1 > gem installed"). I'm able to run the Gem update taps command without > an error after installing. > > However, $gem list does not show Taps as installed, and I cannot see > it in the gem folder at > > /Users/username/.rvm/gems/ree-1.8.7-2010...@appname > > Needless to say, I cannot run the Heroku db:pull command because of > this. > > I am running RVM, I don't know if this are relevant. > > I'm sure I'm doing something simple wrong... > > -- > You received this message because you are subscribed to the Google Groups > "Heroku" group. > To post to this group, send email to her...@googlegroups.com. > To unsubscribe from this group, send email to > heroku+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/heroku?hl=en. > > > > -- You received this message because you are subscribed to the Google Groups "Heroku" group. To post to this group, send email to her...@googlegroups.com. To unsubscribe from this group, send email to heroku+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/heroku?hl=en.
Where do custom logs go?
So my app uses a custom log (via Logger.new) that's writing to Rails.root.join("log", "mylog.log"). The file seems to write just fine, but does this go anywhere I could see it? Or it is at least not dangerous to do this? Thanks, Mat -- You received this message because you are subscribed to the Google Groups "Heroku" group. To post to this group, send email to her...@googlegroups.com. To unsubscribe from this group, send email to heroku+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/heroku?hl=en.
Can't seem to install the Taps gem
I'm trying to use Heroku's Taps gem to get my database from their server. When I run $heroku db:pull it says I need to install the Taps gem using the command: sudo gem install taps I run this command, and as expected, Taps says it has installed ("1 gem installed"). I'm able to run the Gem update taps command without an error after installing. However, $gem list does not show Taps as installed, and I cannot see it in the gem folder at /Users/username/.rvm/gems/ree-1.8.7-2010...@appname Needless to say, I cannot run the Heroku db:pull command because of this. I am running RVM, I don't know if this are relevant. I'm sure I'm doing something simple wrong... -- You received this message because you are subscribed to the Google Groups "Heroku" group. To post to this group, send email to her...@googlegroups.com. To unsubscribe from this group, send email to heroku+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/heroku?hl=en.
Re: logs:cron shows no output
I'm also seeing this, I have hourly cron installed which should produce logging (via puts) every time it runs. When I run heroku logs:cron the last timestamp I see is: Tue Nov 30 14:57:20 -0800 2010 I know my cron is running because the tasks it takes care of are still being handled correctly. What gives, heroku peeps? I sure would like to be able to monitor my cron to make sure everything is running 100% -Zach On Thursday, December 9, 2010 at 6:00 AM, themire wrote: > Not sure if it's related but my cron logs haven't updated since > November 30th though it seems to be running every night. Heroku are > experimenting with a new beta logging service so it might be related > to that. > > -- > You received this message because you are subscribed to the Google Groups > "Heroku" group. > To post to this group, send email to her...@googlegroups.com. > To unsubscribe from this group, send email to > heroku+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/heroku?hl=en. > > > > -- You received this message because you are subscribed to the Google Groups "Heroku" group. To post to this group, send email to her...@googlegroups.com. To unsubscribe from this group, send email to heroku+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/heroku?hl=en.