You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

制作批处理文件运行SQL脚本、实现动态CSV导入及数据库备份

解决方案

一、批处理运行SQL脚本(解决连接问题+确认执行顺序)

  • psql执行SQL脚本时默认按从上到下顺序执行,仅在遇到事务回滚或执行异常时中断。
  • 批处理文件(.bat)写法,配置psql连接参数:
@echo off
set PGUSER=你的数据库用户名
set PGDATABASE=目标数据库名
set PGSCHEMA=Dibbs

:: 执行SQL脚本,指定schema搜索路径
psql -U %PGUSER% -d %PGDATABASE% -v search_path=%PGSCHEMA% -f "你的SQL脚本路径\import_data.sql"

pause
  • 安全提示:避免明文写密码,可在Windows用户目录下创建%APPDATA%\postgresql\pgpass.conf,内容格式为localhost:5432:数据库名:用户名:密码,并将文件权限设为只读。

二、导入带当日日期的动态CSV文件

实现方式:批处理传日期变量到SQL脚本

  1. 批处理文件生成当日日期(格式:YYYYMMDD):
@echo off
:: 获取当前日期,格式YYYYMMDD
for /f "tokens=2 delims==" %%a in ('wmic os get localdatetime /value') do set "dt=%%a"
set "today=%dt:~0,8%"

:: 调用psql并传递日期变量
psql -U 用户名 -d 数据库名 -v csv_filename="C:\Users\yuju\SQL_Data\solicitation%today%.csv" -f "import_data.sql"
  1. 修改SQL脚本,使用传入的变量替换固定文件名:
create temp table "import"(
customer_name varchar(1000),
Quote_number varchar(1000),
Part_number varchar(1000),
Order_Status varchar(1000),
Bid_Total varchar(20),
Unit_Price varchar(20),
Customer_Part_number varchar(1000),
Most_Recent_Unit_Cost varchar(1000),    
Most_Recent_Quantity varchar(1000),
Total_Potential varchar(1000),
Competitors varchar(1000),
Solicitation_number varchar(1000),
NSN varchar(1000),
Date_Accessed date,
Closing_Date date,
Quantity_Requested varchar(1000),
Person_name varchar(1000),
Purchase_request_no varchar(1000),
RFQ_Forms varchar(1000),
Tech_Docs varchar(1000),
Tech_Docs_Links varchar(1000),
Qualifications varchar(1000),
Nomenclature varchar(1000),
Reason varchar(1000),
Spec_Summary varchar(1000),
FAI varchar(1000)
);

copy "import"
FROM :'csv_filename' 
DELIMITER ','
CSV HEADER;

insert into "Dibbs".dibbs_db (customer_name, quote_number,part_number,order_status,bid_total,unit_price,customer_part_number,
most_recent_unit_cost, most_recent_quantity, total_potential, competitors, solicitation_number, nsn_part_number, date_accessed,
closing_date, quantity_requested, person_name, pr_number, request_for_quotation_forms, tech_docs, tech_docs_links,
qualifications, nomenclature, reason, spec_summary, fai)
select *
from "import";
  • 注意:SQL中引用变量需用:'csv_filename'格式(单引号包裹变量名),避免路径含空格时出错。

三、数据库备份批处理脚本

@echo off
:: 获取当前日期时间,格式YYYYMMDD_HHMMSS
for /f "tokens=2 delims==" %%a in ('wmic os get localdatetime /value') do set "dt=%%a"
set "backup_date=%dt:~0,8%_%dt:~8,6%"

:: 备份整个数据库
pg_dump -U 用户名 -d 数据库名 -f "C:\备份路径\db_backup_%backup_date%.sql"

:: 可选:仅备份指定schema
:: pg_dump -U 用户名 -d 数据库名 -n Dibbs -f "C:\备份路径\Dibbs_schema_backup_%backup_date%.sql"

echo 备份完成,文件:C:\备份路径\db_backup_%backup_date%.sql
pause
  • 扩展说明:如需压缩备份,可添加-Fc参数生成自定义格式备份,恢复时使用pg_restore命令。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 22:55:21