使用psql读取文件和执行脚本的命令

时间:2013-07-16 20:41:58

标签: postgresql bulkinsert psql

我正在使用PostgreSQL 9.0.3。我有一个Excel电子表格,其中包含大量数据,可以加载到Windows操作系统中的几个表中。

我编写了脚本来从输入文件中获取数据并将Insert插入到15个表中。 COPY或Import无法完成此操作。我将输入文件命名为DATALD 我发现psql命令-d指向db和-f脚本sql。但我需要知道如何将输入文件与脚本一起提供的命令,以便将数据插入到表中。

例如,这就是我所做的:

begin
for emp in (select distinct w_name from DATALD where w_name <> 'w_name') 
--insert in a loop 
INSERT INTO tblemployer( id_employer, employer_name,date_created, created_by) 
  VALUES (employer_id,emp.w_name,now(),'SYSTEM1'); 

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

对于 SQL脚本,您必须..

  • 要么在脚本中内联数据(在同一文件中)。
  • 或者您需要利用COPY将数据导入Postgres。

我想你使用临时登台表,因为格式似乎不适合目标表。代码示例:
How to bulk insert only new rows in PostreSQL

还有其他选项,例如pg_read_file()。但是:

  

这些功能的使用仅限于超级用户。

用于特殊目的。