Get empty tables when I restore .backup file to postgres - database

I have .backup file and i need to restore it to my postgres database.
But when i choose restore in my database and choose my file, i got all the tables with some empty tables. i don't know if i don't choose the right options but this is what i did :
I choose my backup file;
and then i choose this options from "Option1" and "Options2":

There is a simple way to do this. Type the following command in the command prompt to restore the table:
C:\Program Files\PostgreSQL\10\bin>pg_restore.exe -U user -p port -h host -w -Fc -d database-name < backup-file.backup

Related

A handy .BAT file to update a local Sybase SQL DB

I need to make a change in my local Sybase DB quite often,
changing "version2" value to "10.076" and sometimes to "10.080".
If instead of opening the Interactive SQL tool, typing in DB's credentials each time, I could just run a "76.bat" or "80.bat" file, it would be very handy.
The query is:
UPDATE "trogxxx"."xxversion" SET "version2"=10.076 WHERE "version"='2002'
And credentials:
UserID: Trogxxx
Password: Trogxxx2018
ServerName: dem8
How would a .BAT file look like, in order to log in and run the update?
You could create a basic bat file calling to isql on the command line and use the -i flag to indicate the SQL script containing the update statement which then gets called as an input file. You could prompt for the -U (username) and -P (password) options or hardcode as much as you want.
Syntax: isql -U username -P password -S server -i input_filename
This assumes your environment has sufficient settings for your normal Sybase client e.g. %SYBASE% etc.

Postgres backup not copying contents

I am working on PostgreSQL database and we have a test server which needs to have the same data set as the production one. For this, I plan to start a daily CRON job in linux and copy the production database along with its contents like tables, rows, columns, sequences.
I checked how to copy databases from one to another, and I used the pg_dump command as I will write it below, but it only copied the database tables, sequences, but not the contents.
What should I do to copy the contents?
pg_dump -C databaseName | ssh -C username#removeHost.com "psql databaseName"
Edit
So, What I did was I deleted the database which was on test server,
created a new empty database and then used the command above, and it
worked. So I guess I need to delete the database then only it will
overwrite it.
What should I do to circumvent this behaviour and do a force update
of the database, or delete the test server database even if it is use
and create a new empty database.
Have you tried to use pg_restore instead of psql ? pg_restore has special arguments for your case: -c -C.
Details here:http://www.postgresql.org/docs/current/static/app-pgrestore.html
An example of a command to dump/transfer/restore a db:
pg_dump -F c databaseName | ssh -C username#removeHost.com 'pg_restore --clean --create -d postgres'
For this command you need an empty db on target instance to connect to. (postgres in example).
database named with -d is used only to issue the initial DROP DATABASE
and CREATE DATABASE commands. All data is restored into the database
name that appears in the archive.
If you already have a db on target instance:
pg_dump -F c databaseName | ssh -C username#removeHost.com 'pg_restore --clean -d databaseName'
Similar question: Use pg_dump result as input for pg_restore

Executing set of SQL queries using batch file?

I am using a SQL Server database. I have these SQL queries:
Delete from TableA;
Delete from TableB;
Delete from TableC;
Delete from TableD;
Delete from TableE;
Is it possible to run these scripts using a batch file? The database is a remote database.
Thanks!
Save the commands in a .SQL file, ex: ClearTables.sql, say in your C:\temp folder.
Contents of C:\Temp\ClearTables.sql
Delete from TableA;
Delete from TableB;
Delete from TableC;
Delete from TableD;
Delete from TableE;
Then use sqlcmd to execute it as follows. Since you said the database is remote, use the following syntax (after updating for your server and database instance name).
sqlcmd -S <ComputerName>\<InstanceName> -i C:\Temp\ClearTables.sql
For example, if your remote computer name is SQLSVRBOSTON1 and Database instance name is MyDB1, then the command would be.
sqlcmd -E -S SQLSVRBOSTON1\MyDB1 -i C:\Temp\ClearTables.sql
Also note that -E specifies default authentication. If you have a user name and password to connect, use -U and -P switches.
You will execute all this by opening a CMD command window.
Using a Batch File.
If you want to save it in a batch file and double-click to run it, do it as follows.
Create, and save the ClearTables.bat like so.
echo off
sqlcmd -E -S SQLSVRBOSTON1\MyDB1 -i C:\Temp\ClearTables.sql
set /p delExit=Press the ENTER key to exit...:
Then double-click it to run it. It will execute the commands and wait until you press a key to exit, so you can see the command output.
Check out SQLCMD command line tool that comes with SQL Server. http://technet.microsoft.com/en-us/library/ms162773.aspx
Use the SQLCMD utility.
http://technet.microsoft.com/en-us/library/ms162773.aspx
There is a connect statement that allows you to swing from database server A to server B in the same batch.
:Connect server_name[\instance_name] [-l timeout] [-U user_name [-P password]]
Connects to an instance of SQL Server. Also closes the current connection.
On the other hand, if you are familiar with PowerShell, you can programmatic do the same.
http://technet.microsoft.com/en-us/library/cc281954(v=sql.105).aspx
Different ways:
Using SQL Server Agent (If local instance)
schedule a job in sql server agent with a new step having type as "T-SQL" then run the job.
Using SQLCMD
To use SQLCMD refer http://technet.microsoft.com/en-us/library/ms162773.aspx
Using SQLPS
To use SQLPS refer http://technet.microsoft.com/en-us/library/cc280450.aspx

Create Postgres database using batch file with [template],[encoding],[owner] and a .sql file

I want to create a Postgres database using a batch file. Now the normal way of doing this is the following:
"C:\Program Files\PostgreSQL\9.0\bin\createdb.exe" -U Myadmin MydatAbseName
This script above creates a database with the default database parameters. However, I want to create a database with the following parameters, as follows:
WITH OWNER = Myadmin
TEMPLATE = template0
ENCODING = 'SQL_ASCII'
TABLESPACE = pg_default
LC_COLLATE = 'C'
LC_CTYPE = 'C'
CONNECTION LIMIT = -1;
Please tell me how to create a database with the above parameters using Batch files.
Also let me know how to use a .sql file to do the same, like this command-line:
"C:\Program Files\PostgreSQL\9.0\bin\createdb.exe" -U Myadmin -f C:\createDB.sql;
The client program createdb does not support all those options.
Create a file db_create.sql:
CREATE DATABASE MydatAbseName
WITH OWNER myadmin
TEMPLATE template0
ENCODING 'SQL_ASCII'
TABLESPACE pg_default
LC_COLLATE 'C'
LC_CTYPE 'C'
CONNECTION LIMIT -1;
Call it:
psql -U postgres postgres -f C:/path/to/db_create.sql
The trick here is to connect to the default maintenance db "postgres" and create the new database from there. I do it with the default superuser named "postgres" in my example.
psql -f executes the SQL commands in the given file.
You could also just execute a single command with psql -c (no file involved):
psql -U postgres postgres -c "CREATE DATABASE MydatAbseName WITH OWNER Myadmin
EMPLATE template ENCODING 'SQL_ASCII' TABLESPACE pg_default LC_COLLATE 'C'
LC_CTYPE C' CONNECTION LIMIT -1"
More on creating a database in the fine manual here and here.
More on psql.
On Windows, it looks something like this:
"C:\Program Files\PostgreSQL\verson_number\bin\psql.exe" -U user -f C:/path/to/db_create.sql postgres
The last "postgres" is the name of the default maintenance db.
If you want to use it in a batch file you have to answer a password prompt or connect with a user that is allowed access without providing a password. Basics in chapters The Password File and The pg_hba.conf File of the manual. More here:
Run batch file with psql command without password

SQL Server - Running large script files

I have a database table on a development server that is now fully populated after I set it running with an import routine for a CSV file containing 1.4 million rows.
I ran the Database Publishing Wizard on the table, and now I have a 286MB SQL script on my local machine. The problem is, I can't figure out how to run it. If I load it into SQL Server Management Studio Express I get an alert window that says "The operation could not be completed".
Any ideas on how I can get this SQL script to run?
use the sqlcmd tool to execute the file..
sqlcmd -S myServer\instanceName -i C:\myScript.sql
In case your have an unexplained "script error" for large sql files (> 100MB) which includes several INSERT, just replace "INSERT INTO" by "GO INSERT INTO" in your file, which will reduce size of transaction.
This tool (Big SQL Script File Runner) on CodePlex will run any size script file with log and GUI.
Adding to Gulzar Nazim's answer:
If you still get a failure, try specifying the codepage of your SQL file using option -f:
sqlcmd -S myServer\instanceName -d databaseName -i C:\myScript.sql -f 65001
I was trying to import a .dump file from SQLite (UTF-8 by default), and sqlcmd kept throwing an error after encountering the first special character. -f 65001 fixed it for me.
Why not just use DTS to import the CSV file directly?
Yes we could do that, I tried with BCP(Bulk Copy Program) approach in order to avoid OutOfMemory issue.
Note : Tried in SQLServer 2014
In BCP, first we need to export the Source DataBase data to bcp file(in local directory folder) and then need to import that bcp file to Source DataBase
Below are the cake walk steps:
Note:
a) Make sure empty table is present in Destination DataBase
b) Make sure Temp folder is present in C drive
1) Create a bat file named as Export_Data.bat with below command
bcp.exe [Source_DataBase_Name].[dbo].[TableName] OUT "C:\Temp\TableName.bcp" -S "Computer Name" -U "SQL Server UserName" -P "SQL Server Password" -n -q
pause
2) Run that bat file, as a result of that a bcp file will get generated in Temp folder
3) Then Create a another bat file named as Import_Data.bat with below command
bcp.exe [Destination_DataBase_Name].[dbo].[TableName] IN "C:\Temp\TableName.bcp" -S "Computer Name" -U "SQL Server UserName" -P "SQL Server Password" -n -q
Pause
And here we go!!
Running something that large inside a single transaction is not a good idea. Therefore, I'd recommend breaking up the file into smaller, more manageable chunks.
Another option is to look at some of the other ways to import CSV data directly.

Resources