如何在 Windows 中从 .bat 文件创建 ODBC 连接?

如何在 Windows 中从 .bat 文件创建 ODBC 连接?

我需要一个批处理脚本来从 Windows 中的 .bat 文件创建 ODBC/DSN 连接。我该怎么做?

答案1

当然。

使用管理工具中的“数据源 (ODBC)”小程序在您的电脑上手动创建 ODBC 连接。

启动 regedit 并转到 HKLM\Software\ODBC,然后将所有内容从 ODBC 导出到 .reg 文件。这是文件夹上的右键单击选项。

现在在记事本中打开导出的文件,您需要删除所有不涉及特定 ODBC 连接的内容。

你最终应该会得到一个类似这样的注册表文件

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources]
"TEST"="SQL Server"

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\TEST]
"Driver"="C:\\Windows\\system32\\SQLSRV32.dll"
"Server"="SERVERNAME"
"LastUser"="USERNAME"
"Trusted_Connection"="Yes"

根据连接设置等,它可能略有不同。您将需要两个部分,数据源定义连接的类型,在本例中为 SQL 服务器,然后是告诉您它叫什么、使用哪个驱动程序以及使用哪种身份验证的位。这一切都将在您设置连接时完成,您只需要包含它的 .reg 文件。

然后,您可以通过双击 reg 文件将其导入到任何 PC 上,或者如果您有工具,也可以运行脚本使用 regedit 将其导入。您可以从批处理文件中调用此导入:

regedit /s FileToImport.reg

答案2

@Echo Off
cd %systemroot%\system32
call :IsAdmin

SET /P psqlname=PostgreSQL Link datasource ismini  Giriniz : 
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources" /v "%psqlname%" /t REG_SZ /d "PostgreSQL Unicode(x64)" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v  "Driver" /t REG_SZ /d "C:\\Program Files\\psqlODBC\\1301\\bin\\psqlodbc35w.dll" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v  "CommLog" /t REG_SZ /d "0" /f

reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v  "Debug" /t REG_SZ /d "0" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v  "Fetch" /t REG_SZ /d "100" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v  "UniqueIndex" /t REG_SZ /d "1" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v  "UseDeclareFetch" /t REG_SZ /d "0" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v  "UnknownSizes" /t REG_SZ /d "0" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v  "TextAsLongVarchar" /t REG_SZ /d "1" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v  "UnknownsAsLongVarchar" /t REG_SZ /d "0" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v  "BoolsAsChar" /t REG_SZ /d "1" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v  "Parse" /t REG_SZ /d "0" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v  "MaxVarcharSize" /t REG_SZ /d "255" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v  "MaxLongVarcharSize" /t REG_SZ /d "8190" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v  "ExtraSysTablePrefixes" /t REG_SZ /d "" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v  "Description" /t REG_SZ /d "" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v   "UID"        /t REG_SZ /d "postgres" /f
SET /P dbname=Baglanmak istediginiz Postgresql Database name  Giriniz : 
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "Database" /t REG_SZ /d "%dbname%" /f
SET /P Username=Baglanmak istediginiz Database Kullanici ismini giriniz : 
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "Username"  /t REG_SZ /d "%Username%" /f
SET /P  Password=Baglanmak istediginiz Database Kullanici password bilgisini  giriniz  : 
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "Password"  /t  REG_SZ /d "%Password%" /f
SET /P  Servername=Baglanmak istediginiz Database Servername adresini giriniz : 
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "Servername" /t REG_SZ /d  "%Servername%" /f
SET /P Port=Portu numarasini giriniz : 
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v  "Port"  /t  REG_SZ /d      "%Port%"    /f

echo lutfen odbc baglantilarini test edin
Pause & Exit

答案3

我们可以对 Gerald Schneider 之前的剧本做一些修改:

@echo Off
cd %systemroot%\system32
set  psqlname=Dsn_name
set  dbname=database
set  Username=Username
set  Password=password
set  Servername=servername
set  Port=5432
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\"
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources" /v "%psqlname%" /t REG_SZ /d "PostgreSQL Unicode(x64)" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v  "Driver" /t REG_SZ /d "C:\Program Files\psqlODBC\0905\bin\psqlodbc35w.dll" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v  "CommLog" /t REG_SZ /d "0" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v  "Debug" /t REG_SZ /d "0" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v  "Fetch" /t REG_SZ /d "100" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v  "UniqueIndex" /t REG_SZ /d "1" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v  "UseDeclareFetch" /t REG_SZ /d "0" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v  "UnknownSizes" /t REG_SZ /d "0" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v  "TextAsLongVarchar" /t REG_SZ /d "1" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v  "UnknownsAsLongVarchar" /t REG_SZ /d "0" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v  "BoolsAsChar" /t REG_SZ /d "1" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v  "Parse" /t REG_SZ /d "0" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v  "MaxVarcharSize" /t REG_SZ /d "255" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v  "MaxLongVarcharSize" /t REG_SZ /d "8190" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v  "ExtraSysTablePrefixes" /t REG_SZ /d  /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v  "Description" /t REG_SZ /d  /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v   "UID"        /t REG_SZ /d "postgres" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "Database" /t REG_SZ /d "%dbname%" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "Username"  /t REG_SZ /d "%Username%" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "Password"  /t  REG_SZ /d "%Password%" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "Servername" /t REG_SZ /d  "%Servername%" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v  "Port"  /t  REG_SZ /d      "%Port%"    /f
exit 0

相关内容