SQL中是否有方法将目录中包含的所有.csv导入我的postgres表?(视窗操作系统)
SQL中是否有方法将目录中包含的所有csv导入我的postgres表SQL中是否有方法将目录中包含的所有.csv导入我的postgres表?(视窗操作系统),sql,windows,postgresql,batch-file,Sql,Windows,Postgresql,Batch File,SQL中是否有方法将目录中包含的所有csv导入我的postgres表 谢谢您的帮助。这根本不是PostgreSQL特有的。您需要使用循环对每个文件调用一次psql,为每个输入文件生成包含\include命令的主文件,或者连接所有输入文件,然后运行它们 所有这些任务都是通过操作系统命令提示符工具完成的,而不是PostgreSQL 要连接文件并运行结果,请执行以下操作: type *.sql | psql 要使用cmd.exe在它们上面循环,循环语法惊人地丑陋(未经测试,有关详细信息,请参阅和):
谢谢您的帮助。这根本不是PostgreSQL特有的。您需要使用循环对每个文件调用一次
psql
,为每个输入文件生成包含\include
命令的主文件,或者连接所有输入文件,然后运行它们
所有这些任务都是通过操作系统命令提示符工具完成的,而不是PostgreSQL
要连接文件并运行结果,请执行以下操作:
type *.sql | psql
要使用cmd.exe
在它们上面循环,循环语法惊人地丑陋(未经测试,有关详细信息,请参阅和):
我相信第三条路也是可能的。这可能会起作用(相当于在unix设备上的真实shell中起作用),但未经测试,因为我手头没有方便的Windows:
FOR %%f IN (*.sql) DO (
echo "\include %%~nf"
) | psql
据我所知,这些都不能保证文件以任何特定的顺序运行。您需要在Windows shell上查找文档
就我个人而言,我建议在Powershell、Perl或其他比cmd.exe批处理语言更糟糕的脚本语言中执行此类操作
无论哪种方式,所有文件都必须具有系统默认的1字节文本编码,或者必须包含显式的
SET client\u encoding=…
语句。可能重复的问题这不是很有帮助的将文件合并为一个,然后导入。对于没有标题的文件,请在cmd:copy*.csv all.txt
中运行此命令,这通常是您使用的SQL客户端的功能,而不是数据库服务器的功能。非常感谢Craig!
FOR %%f IN (*.sql) DO (
echo "\include %%~nf"
) | psql