我有一个将csv文件复制到表中的sql文件(import_noeud.sql)。
\copy public.import_noeud FROM 'T:\Affaires\102\171205_noeud.csv' DELIMITER ';' CSV;
然后我使用带有psql语句的批处理文件来启动我的sql文件。
psql -h localhost -U postgres -d dev -v ON_ERROR_STOP=1 -f import_noeud.sql> 01.log 2>&1
目前,每次用户想重新导入新点时,都必须修改sql文件的from子句。
我的问题是,我的批处理文件可以:
答案 0 :(得分:0)
让我们将vbs
合并到.bat
或.cmd
批处理文件中。 vbs
用于选择文件。
将vbs
和cmd
文件保存在同一目录中。
<强> import.vbs 强>
Set wShell=CreateObject("WScript.Shell")
Set oExec=wShell.Exec("mshta.exe ""about:<input type=file id=FILE><script>FILE.click();new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);</script>""")
myFile = oExec.StdOut.ReadLine
wscript.echo myFile
<强> runme.cmd 强>
@echo off
for /f "tokens=*" %%a in ('cscript //nologo import.vbs') do (set "VBSoutput=%%a")
echo \copy public.import_noeud FROM '%VBSoutput%' DELIMITER ';' CSV; > SOME_IMPORT.sql
现在您可以运行批处理文件,该文件将打开选择要打开的文件窗口。选择 open 后,它会选择该文件并自动将其echo
\copy...
推送到.sql
文件。所以,假设您浏览并选择:
T:\Affaires\102\171205_noeud.csv
它会将以下内容回显给sql
文件,在这种情况下名为SOME_IMPORT.sql
\copy public.import_noeud FROM 'T:\Affaires\102\171205_noeud.csv' DELIMITER ';' CSV;
如果您喜欢批处理文件,也可以添加SQL文件的启动。
如果您决定更改vbs脚本的名称,请确保您也在批处理字符串('cscript //nologo import.vbs')
希望它有所帮助。