MySQL Import Database Schema - command-line

I'm having issues attempting to import a database of 195MB via the command line.
mysql -u root -p [DB_NAME] C:\Users\user_name\Downloads\file.sql
When I run this command all I receive from MySQL is a list of variables and options available.
What am I doing wrong?
Also like to add I'm using a fresh install of XAMPP.

You're missing a <, which means you want to direct the content of the file into mysql.
mysql -u root -p [DB_NAME] < C:\Users\user_name\Downloads\file.sql

Related

after gdal installation, 'ogr2ogr/ogrinfo/gdalinfo' is not recognized as an internal or external command, operable program, or batch file

I installed Homebrew and used it to install GDAL from within Ubuntu. After the installation finished, I'm still running into the following error: "'ogr2ogr/ogrinfo/gdalinfo' is not recognized as an internal or external command, operable program, or batch file" anytime I try using ogr2ogr, gdalinfo --version, or ogrinfo --help in command prompt. If I run those in Ubuntu, the error message reads "command not found."
Does this mean the installation did not work correctly? Would you advise to try reinstalling GDAL?
(The end goal is to use ogr2ogr to import a shapefile into postgres, eventually running
ogr2ogr -f "PostgreSQL" PG:"host=myhost user=myloginname dbname=mydbname password=mypassword" mytabfile.tab as advised by the documentation.)
If you're simply trying to import shapefiles into PostgreSQL, you might wanna take a look at shp2pgsql. It's quite simple - if you have the luxury of choosing the import tool :)
Data sample: TM_WORLD_BORDERS_SIMPL-0.3.zip
After unpacking your zip file just execute the following line in your console:
$ shp2pgsql -I -s 4326 TM_WORLD_BORDERS_SIMPL-0.3.shp table_world | psql -d mydb
Things to take into account:
table_world is the name of the target table
psql -d mydb takes into account that your current operating system user has an account in the database, that no password is required, that the database is installed at localhost and that it listens at the the standard port 5432. Check the psql documentation to build your own connection command, e.g. psql -U myuser -h 192.168.1.42 -p 5434 -d mydb to login with the user myuser in the database mydb in the remote PostgreSQL at 192.168.1.42 that listens at the port 5434. In case your PostgreSQL isn't configured to accept connections, check this answer.
4326 is the identifier for WGS84, which is the spatial reference system of this shapefile - and the most often used worldwide.
.. and your data is ready to be played with, e.g. import into QGIS:
Further reading: psql, shp2pgsql tutorial

How do I mongo restore using an input directory with multiple local dbs in /data/db/?

I have 4 local dbs in my /data/db directory
$ mongo
MongoDB shell version: 3.2.9
connecting to: db-A
$ show dbs
db-A 0.00gb
db-B 0.02gb
db-C 0.08gb
db-D 0.00gb
When I try to run:
$ mongorestore -h dsxxxxx.mlab.com:xxxxx -d <dbname> -u <user> -p <password> /data/db`
It imports the db-A database to my mlab db, how do I specify that I want to import the db-C databse?
This is an old post, but I figured i would post my findings.
If you use mongodump -d dbname -o /path/to/folder for all your data bases, you can then use mongorestore /path/to/folder and it will read all of the databases inside the folder.
If you are moving data from one mongodb instance to other, you need first dump data out from first database and then you can import it to other. You cannot use mongorestore to read directly source database and "restore" it to new one.
You can use copyDatabase() command at destination mongo to copy whole database from other machine.
There is mongodb-connector what you can use too. Actually it's very handy tool to "replicate" one way between two instances.

mongodb - mongodump is not defined

I am a newbie to mongodb. I am trying to take a backup of my database using mongodump. But whenever I use this command I get the below error
Referenceerror: mongodump is not defined
I tried creating a new user with all the roles but still I get the same error. Should I add a specific role to take a backup? Or am I doing something wrong?
'mongodump' is a command/tool which is included in the 'mongodb-tools' package. If you don't have this package installed on your machine, it makes sense that it is not defined. The mongodb-tools also provide several other tools used for importing and exporting DBs (like mongorestore).
That being said, 'mongodump' is not a mongo-shell command, you shouldn't be using it in mongo-shell. It's a whole different command that you would be executing just like you execute 'mongod' or 'mongo' etc.
One simple way is to right-click mongodump.exe and "Run as administrator". It will create dump folder in bin of your mongodb home containing all database backups.
If you want to go with commands, open cmd as administrator and go to bin of your mongodb where you'll be able to fire commands such as mongorestore, mongodump etc. with intended parameters e.g for specific db or interact with remote mongodb.
tested on (v4.2.3)
Note: many folks try to execute these commands in mongod where you can execute queries which is wrong, these tools needs to be used separately.
Here ar e 2 simple exemples for a full backup using authentication and without
mongodump -h hostname -v -u sys_account -p ys_password --authenticationDatabase admin --out folder_location_for_backup
if no authentication
mongodump -h hostname -v --out folder_location_for_backup
here are the mongorestore commands as well
mongorestore -h hostname -v -u admin_user -p admin_password --authenticationDatabase admin --dir folder_location_where_backup_is_located
if no authentication
mongorestore -h hostname -v --dir folder_location_where_backup_is_located
for windows, you need to start executable file by running following command
"C:\Program Files\MongoDB\Server\3.4\bin\mongodump.exe" --db your_database_name
Above command will export your database to dump folder. This folder will be located where you have kept your "data" folder. If you use default "data/db" folder then it will be there but if you use different location then it will be kept over there.
This command must be run in normal command prompt, not in mongo shell. It is executable not mongo shell command. Official docs link is here.
Download MongoDB Command Line Database Tools .The mongodump tool is part of the MongoDB Database Tools package.
There are great chances that mongodump is being performed under Mongo Shell
mongodump should be run directly on command line or terminal (NOT inside mongo shell)
For creating dump of database
mongo --db database_name
For creating dump of any collection of database
mongo --db databas_name --collection collection_name

Deploy local mongo collection to meteor.com server

I am starting my first meteor app, using MongoDB for my database.
I have copied my data in from a JSON file into mongodb collection and when hosting locally, the data appears as expected; the collection is in the meteor mongo database and I can interpret at will
When I deploy the app to xx.meteor.com, the meteor collection I need (named 'assets') does not get posted to the mongodb on the server. I can check this by using meteor mongo onemore.meteor.com. Other collections are posted though.
How do I deploy my mongoDB colletion ('assets') along with the app using meteor deploy?
Is this issue due to the way the mongodatabase was orginally imported? I used this method: https://github.com/awatson1978/meteor-cookbook/blob/master/cookbook/database-management.md
I copied the collection ('assets) from a staging database using db.copyDatabase('staging3','meteor','localhost')
Using mongodump and mongorestore also works:
Dump data from existing mongodb (mongodb url: mongodb://USER:PASSWORD#DBHOST/DBNAME)
mongodump -h DBHOST -d DBNAME -u USER -p PASSWORD
This will create a "dump" directory, with all the data going to dump/DBNAME.
Get the mongodb url for the deployed meteor app (i.e. www.mymeteorapp.com)
meteor mongo --url METEOR_APP_URL
This will return the following:
mongodb://#USERNAME#:#PASSWORD###HOSTNAMEANDPORT#/#YOURAPPLICATION#
Note: the PASSWORD expires every min.
Upload the db dump data to the meteor app (using an example meteor db url)
mongorestore -u #USERNAME# -p #PASSWORD# -h #HOSTNAMEANDPORT# -d www_mymeteorapp_com dump/DBNAME/
All the data should get transferred!
This answer is basically a modified version of Davidd8's answer here, but because that was never accepted I reposted it here.
None of the above worked for me. Here is what did the trick for me:
1) How do I get my localhost dump of my meteor db?
tip 1: make sure mongo is running (type mongod to run it)
Which port was my meteor running on?
$ mongodump --host localhost:3002 (nope)
$ mongodump --host localhost:3000 (nope)
$ mongodump --host localhost:3001 (yes!) this worked
Now where the heck did it put my dump?
$ ls (shows me the dump is in my current directory and meteor is inside the dump directory)
I need to somehow get that meteor data onto my live site on meteor.com
Now the next problem is that meteor.com will give me the information I need but I only have 1 minute before their information expires.
This information is what I need to connect to my remote meteor site and import my local meteor data.
I type this in the terminal:
$ meteor mongo --url iamcool.meteor.com
Then it spits back something like this:
mongodb://client-11f3014w:f1c52f68-8506-b682-c880-b5db03a9510e#production-db-a2.meteor.io:27017/iamcool_meteor_com
I used info from above that told me what data to extract from the above code and where to put it in the mongorestore code
mongorestore -u #USERNAME# -p #PASSWORD# -h #HOSTNAMEANDPORT# -db www_mymeteorapp_com dump/DBNAME/
This is where you have to be a super fast typer. I recommend opening a blank file in your IDE (Sublime Text or Atom or whatever you use) and create this template:
mongorestore -u XXX -p XXX -h production-db-a2.meteor.io:27017 -db iamcool_meteor_com dump/meteor
So I took the data meteor.com gave me and I plugged it in below:
mongorestore -u client-4bf9be36 -p d1cdef86-6c71-3b11-ef4c-221fbdcf07d0 -h production-db-a2.meteor.io:27017 -db iamcool_meteor_com dump/meteor
And then the errors came. And boy did they come.
Sometimes I got this error:
too many positional arguments
Sometimes I got this error:
Failed: error connecting to db server: auth fails
But this error tip gave me the info that saved the day:
try 'mongorestore --help' for more information
I did and I found out that the flag to pass for database wasn't -db but rather -d
I made the following change and typed it fast using my trusty template (see above)
mongorestore -u client-4bf9be36 -p d1cdef86-6c71-3b11-ef4c-221fbdcf07d0 -h production-db-a2.meteor.io:27017 -d iamcool_meteor_com dump/meteor
And then it worked.
It took me two hours to figure out. Hope it saves you the time I lost.

How can I download db from heroku?

I'm using heroku and I want to download the database from my app(heroku) so I can make some changes in it, I've installed pgbackups, but using heroku pgbackups:url downloads a .dump file
How can I download a postgresql file or translate that .dump into a postgresql file?
If you're using Heroku's pgbackups (which you probably should be using):
$ heroku pg:backups capture
$ curl -o latest.dump `heroku pg:backups public-url`
"Translate" it into a postgres db with
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
See https://devcenter.heroku.com/articles/heroku-postgres-import-export
There's a command for this in the CLI - heroku db:pull which will do this for you. db:pull can be a bit slow mind you so you may be better to use the next option.
If you are using complex postgress data types (hstore, arrays etc) then you need to use the pgtransfer plugin https://github.com/ddollar/heroku-pg-transfer which will basically does a backup on Heroku and a restores it locally.
UPDATE: db:pull and db:push have been deprecated and should be replaced with pg:pull and pg:push - read more at https://devcenter.heroku.com/articles/heroku-postgresql#pg-push-and-pg-pull
I found the first method suggested in the documentation pull/push even easier. No password or username needed.
pg:pull
pg:pull can be used to pull remote data from a Heroku Postgres
database to a database on your local machine. The command looks like
this:
$ heroku pg:pull HEROKU_POSTGRESQL_MAGENTA mylocaldb --app sushi
This command will create a new local database named “mylocaldb” and
then pull data from database at DATABASE_URL from the app “sushi”. In
order to prevent accidental data overwrites and loss, the local
database must not exist. You will be prompted to drop an already
existing local database before proceeding.
At first I had an error: /bin/sh: createdb: command not found; which I solved following this SO post.
An alternative described also in the documentation (I did not try it yet) is:
To export the data from your Heroku Postgres database, create a new
backup and download it.
$ heroku pg:backups:capture
$ heroku pg:backups:download
Source: Importing and Exporting Heroku Postgres Databases with PG Backups
To export the data from Heroku Postgres database, just follow below steps
Login to heroku
Go to APP->settings->reveal config variable
Copy DATABASE_URL
run pg_dump --DATABASE_URL_COPIED_IN_STEP_3 > database_dump_file
Note this will provide postgresql file or for dump file you can download directly from postgres addon interface.
I think the easiest way to download and replicate the database on local server:
**PGUSER**=LOCAL_USER_NAME PGPASSWORD=LOCAL_PASSWORD heroku pg:pull --app APP_NAME HEROKU_POSTGRESQL_DB_NAME LOCAL_DB_NAME
Go through this document for more info:
https://devcenter.heroku.com/articles/heroku-postgresql#pg-push-and-pg-pull
This is the script that I like to use.
namespace :heroku do
desc "Import most recent database dump"
task :import_from_prod => :environment do
puts 'heroku run pg:backups capture --app APPNAME'
restore_backup 'APPNAME'
end
def path_to_heroku
['/usr/local/heroku/bin/heroku', '/usr/local/bin/heroku'].detect {|path| File.exists?(path)}
end
def heroku(command, site)
`GEM_HOME='' BUNDLE_GEMFILE='' GEM_PATH='' RUBYOPT='' #{path_to_heroku} #{command} -a #{site}`
end
def restore_backup(site = 'APPNAME')
dump_file = "#{Rails.root}/tmp/postgres.dump"
unless File.exists?(dump_file)
pgbackups_url = heroku('pg:backups public-url -q', site).chomp
puts "curl -o #{dump_file} #{pgbackups_url}"
system "curl -o #{dump_file} '#{pgbackups_url}'"
end
database_config = YAML.load(File.open("#{Rails.root}/config/database.yml")).with_indifferent_access
dev_db = database_config[Rails.env]
system "pg_restore -d #{dev_db[:database]} -c #{dump_file}".gsub(/\s+/,' ')
puts
puts "'rm #{dump_file}' to redownload postgres dump."
puts "Done!"
end
end