在postgresql中运行sql文件并导出结果的操作

方法一 在psql中运行

在终端进入用户test下的数据库testdb:

$ psql -p 5432 -U test -d testdb

假设要执行的.sql文件叫做d1.sql,存放路径为:/mnt/hgfs/share/database/2.18.0_rc2/dbgen/queries/d1.sql,导出的文件叫做d1.out,存放的路径为:/mnt/hgfs/share/database/2.18.0_rc2/dbgen/queries/out/d1.out

testdb=# \o /mnt/hgfs/share/database/2.18.0_rc2/dbgen/queries/out/d1.out
testdb=# \i /mnt/hgfs/share/database/2.18.0_rc2/dbgen/queries/d1.sql
testdb=# \o

\o file1 表示接下来的内容输出到文件file1

\i file2 表示导入文件file2

\o 表示结束输出到文件file1

方法二 在终端运行

$ psql -p 5432 -U test -d testdb -f /mnt/hgfs/share/database/2.18.0_rc2/dbgen/queries/d1.sql > /mnt/hgfs/share/database/2.18.0_rc2/dbgen/queries/out/d1.out

补充:postgresql windows自动导出sql

@ECHO OFF
@setlocal enableextensions
@cd /d "%~dp0"

set PGPASSWORD="D:/sql_bak/pws.vbs"
SET PGPATH="D:/Program Files/PostgreSQL/10/bin/pg_dump"
SET SVPATH=D:/sql_bak/
SET PRJDB=fame
SET DBUSR=postgres
FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%k
FOR /F "TOKENS=1,2,3 DELIMS=: " %%i IN ('TIME /T') DO SET t=%%i%%j%%k

SET DBDUMP=%PRJDB%_%d%_%t%.sql

%PGPATH% -h 127.0.0.1 -p 5432 -U %DBUSR% %PRJDB% > %SVPATH%%DBDUMP%

echo Backup Taken Complete %SVPATH%%DBDUMP%

将以上文件保存为 bat格式。

PGPATH:postgresqsl 安装目录

SVPATH:备份路径

PRJDB:数据库名字

DBUSR:用户名

数据库修改配置文件:pg_hba.conf

设了对本地要密码md5认证。

# TYPE DATABASE  USER    CIDR-ADDRESS     METHOD
# IPv4 local connections:
host  all     all     127.0.0.1/32     md5

改成这样,本地备份就不用输入密码了(改后要重启服务)

# TYPE DATABASE  USER    CIDR-ADDRESS     METHOD
# IPv4 local connections:
host  all     all     127.0.0.1/32     trust

cmd 然后进入postgresql的bin目录

执行

psql -h localhost -U username -d database < d:/data.bak

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • Postgresql的pl/pgql使用操作--将多条执行语句作为一个事务

    Postgresql的pl/pgql用法--将多条执行语句作为一个事务 DO $$ DECLARE v_id bigint; begin --1. INSERT INTO r_test_a (name, value, unit, mode, uid, create_ts) SELECT 't_t','','',2,0, extract(epoch from now())::bigint WHERE NOT EXISTS (SELECT id FROM r_test_a WHERE name =

  • 本地计算机上的 postgresql 服务启动后停止的问题解决

    在启动 postgresql 服务是遇到这种情况: 解决方法: 打开计算机管理====>查看应用程序日志信息,可以看出,由于日志配置错误的问题. 找到 postgresql.conf 文件,做如图修改,解决问题: postgresql 日志配置参考下面的补充部分: 总结: 遇到类似的问题可以采用同样的方式,多注意查看windows日志,找到错误源. 补充:EDB日志配置-慢sql记录分析 1.打开:/postgresql的安装目录/data/postgresql.conf 2.找到并更改以下属性

  • 在postgresql中通过命令行执行sql文件

    通过命令行执行初始化sql脚本是比较常见的需求,命令行下执行如下操作即可: 若是执行的命名只是创建用户,编辑用户,创建数据库的话可以不指定-d参数. psql -U username -d myDataBase -a -f init.sql 如果是远程数据库加入-h参数指定主机地址即可 psql -h host -U username -d myDataBase -a -f init.sql 补充:PostgreSQL操作-psql基本命令 一.建立数据库连接 接入PostgreSQL数据库:

  • PostgreSQL upsert(插入更新)数据的操作详解

    本文介绍如何使用PostgreSQL upsert特性插入或当被插入数据已存在则更新数据. 1. 介绍PostgreSQL upsert 在关系型数据库中,upsert是一个组合词,即当往表中插入记录,如果该记录已存在则更新,否则插入新记录.为了使用该特性需要使用INSERT ON CONFLICT语句: INSERT INTO table_name(column_list) VALUES(value_list) ON CONFLICT target action; 该语法中target可以是下

  • postgresql 启动与停止操作

    启动和停止数据库服务器 service 方式 service postgresql-10 start service postgresql-10 stop service postgresql-10 status pg_ctl 方式 pg_ctl start -D [ data 所在路径 ] pg_ctl stop -D [ data 所在路径 ] 三种形式:-m 指定模式 smart 模式:会等待活动的事务提交结束,并等待客户端主动断开连接之后关闭数据库服务 fast 模式:会回滚所有的活动的

  • postgresql 修改字段长度的操作

    使用数据库postgresql的时候,有时会遇到字段长度扩展的情况,由于之前已经有数据了,所以只能修改字段长度,不能通过删除再增加的方式. 可以使用如下方式进行 ALTER TABLE your_table_name alter COLUMN your_column_name type character varying(3000); 通过上面的一句话就可以把你的表中相应的字段的长度修改为3000. 补充:PostgreSQL字符类型长度变更的性能 背景 业务有时会遇到表中的字符型字段的长度不够

  • 在postgreSQL中运行sql脚本和pg_restore命令方式

    今天踩坑了,把powerdesign生成的sql脚本文件,用pg_restore命令一直运行... 过程惨不忍睹,一直以为是编码问题,修改了serve和client的encoding,结果... 记录一下这个错误: postgreSQL运行sql脚本文件: psql -d dbname -U username -f (脚本所在位置).sql postgerSQL的pg_restore命令 用法: pg_restore [选项]- [文件名] 一般选项: -d, --dbname=名字 连接数据库

  • Postgresql psql文件执行与批处理多个sql文件操作

    新建一个批处理文件batch.sql \encoding UTF8; \cd C:/Gmind/ddl \set ON_ERROR_STOP 1 \set ECHO all \timing on \i s_product.sql; \i s_branch.sql; \i s_comment.sql; \i s_class.sql; \i s_drawing.sql; \i s_dmemo.sql; \i s_form.sql; \encoding 设置客户端字符集编码(可选) \cd 切换目录.

  • 在postgresql中运行sql文件并导出结果的操作

    方法一 在psql中运行 在终端进入用户test下的数据库testdb: $ psql -p 5432 -U test -d testdb 假设要执行的.sql文件叫做d1.sql,存放路径为:/mnt/hgfs/share/database/2.18.0_rc2/dbgen/queries/d1.sql,导出的文件叫做d1.out,存放的路径为:/mnt/hgfs/share/database/2.18.0_rc2/dbgen/queries/out/d1.out testdb=# \o /m

  • Python实现mysql数据库中的SQL文件生成和导入

    目录 1.将mysql数据导出到SQL文件中(数据库存在的情况) 2.将现有的sql文件数据导入到数据库中(前提数据库存在) 3.利用Navicat导出SQL文件和导入SQL文件 1)从数据库导出SQL文件 2)导入SQL文件到数据库 1.将mysql数据导出到SQL文件中(数据库存在的情况) 主要需要修改数据库的相关信息,端口号.用户名.密码等 其中数据库得存在,不然会报错 : #!/usr/bin/env python # -*- coding: utf-8 -*- # @descripti

  • Navicat运行sql文件导入数据不全或导入失败的解决方案

    目录 前言: 解决问题办法: 第一: 第二: 第三: 第四: 第五: 第六: 第七: 一.window环境 A. 导出.sql B. 导入.sql 二.linux环境 A. 导出.sql B. 导入.sql 第八: 总结 前言: 我们平时想把数据从一个数据库中导入另外一个数据库中的时候 一般都是把所需的数据表进行转储sql文件 然后再运行sql文件 导入新的数据库中 这么做 数据少的时候一般不会出现什么错 但是如果数据量比较大 表比较多 就会出现缺少数据表 或者缺少数据 解决问题办法: 查询网上

  • 在cmd中运行.py文件: python的操作步骤

    1 打开cmd, 不改变运行的目录: 输入python 空格  调试好的python文件路径 或者python 空格  将python文件拖入cmd中 2 打开cmd 输入要改变的路径盘 比如:E: (回车键) 输入路径languang\sublime\pythonTest.py 回车运行 以上这篇在cmd中运行.py文件: python的操作步骤就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们. 您可能感兴趣的文章: 在CMD命令行中运行python脚本的方法

  • 在python shell中运行python文件的实现

    最近在学习flask开发,写好程序后需要在python shell中运行测试功能.专门抽时间研究了下,总结以防止以后遗忘. 这是测试文件的结构,python_example主文件夹,下面有example.py和一个subexample子文件夹,我要分别调用example.py和subexample.py. 主要三段代码 1.import sys 此时默认读取和python shell一个文件夹下的python,若是程序放在别处,需添加文件所在路径.再导入文件. 2.sys.path.append

  • Finished with error:Navicat运行SQL文件报错的解决

    目录 问题描述 错误原因 解决方法 其他问题 字符集问题 运行选项问题 SQL代码问题 总结 问题描述 使用 Navicat 导入之前转储好的 sql 文件,报错 错误原因 在信息日志当中往上翻,发现没有选择数据库,所以报错的原因就是没有提前创建好一个同名的空数据库 解决方法 创建SQL文件对应的数据库名,然后找到对应数据库, 右键  运行SQL文件!  错误解决 其他问题 字符集问题 注意保证原数据库的字符集,排序方式  和  新建数据库的一致 运行选项问题 有时候把这个选项取消选中,再运行就

  • 在linux中导入sql文件的方法分享(使用命令行转移mysql数据库)

    因导出sql文件 在你原来的网站服务商处利用phpmyadmin导出数据库为sql文件,这个步骤大家都会,不赘述. 上传sql文件 前面说过了,我们没有在云主机上安装ftp,怎么上传呢? 打开ftp客户端软件,例如filezilla,使用服务器IP和root及密码,连接时一定要使用SFTP方式连接,这样才能连接到linux.注意,这种方法是不安全的,但我们这里没有ftp,如果要上传本地文件到服务器,没有更好更快的方法. 我们把database.sql上传到/tmp目录. 连接到linux,登录m

  • 浅谈PostgreSQL中的孤儿文件用法(orphaned data files)

    创建一个测试表 postgres=# create table t1(a int); CREATE TABLE postgres=# select pg_relation_filepath('t1'); pg_relation_filepath ---------------------- base/75062/75297 (1 row) postgres=# 在操作系统上已经可以看到该文件. $ ls -la $PGDATA/base/75062/75297 -rw------- 1 post

  • SQLServer导出sql文件/表架构和数据操作步骤

    很多朋友问到sql server数据库"生成脚本",只导出了数据库的sql脚本,而表里的数据依然没有导出来.很简单,看教程: 注:我这里用的SQLServer2008,其它版本应该差不多. 一.选中要导出的数据库–>任务–>生成脚本(或者在任务里面有生成脚本这个选项,好好找找能找到的!) 二.出现"生成和发布脚本"窗口,点击下一步 三.选择要编写脚本的数据库对象,全部导出选第一个,如果你想导出部分数据勾选    第二个就好了 四.出现这个画面后点击&qu

随机推荐