[英]pass paramter from batch to mysql file
我盡力讓我的批處理將參數傳遞給mysql文件
我的批次:
SET MYSQL_EXE="C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe"
SET DB_USER=root
SET DB_PWD=viper007
SET DB=db01
FOR %%c in (D:\Dev_Algo\Grt_pce\datas\*.*) do (
set "str=%%c"
SETLOCAL ENABLEDELAYEDEXPANSION
call set "str=%%str:\=/%%"
echo SET @fpath ='!str!' > params.sql
ENDLOCAL
type params.sql D:\Dev_Algo\Grt_pce\query0.sql | mysql --user=%DB_USER% --password=%DB_PWD% --database=%DB%
)
我的params.sql文件
SET @fpath ='D:/Dev_Algo/Grt_pce/datas/LBFLO007.csv'
我的SQL文件(提取)
SET @file=@fpath;
LOAD DATA INFILE @file IGNORE INTO TABLE db01.tblpce
fields terminated by ';'
ignore 1 lines
結果-我可以連接到mysql沒問題-我可以從MYSQL Workbench用SQL命令加載我的文件-參數文件沒問題,並且加載數據輸入文件需要單引號-我不能設置變量@fpath。 我從批處理中收到錯誤消息
第1行的錯誤1064(4200):您的SQL Synthax錯誤; 檢查手冊...'SET @ file = @ fpath'在第二行
我讀了這個http://bugs.mysql.com/bug.php?id=39115 ,顯然這個功能沒有實現。 是此限制與我的錯誤消息鏈接。
我如何繞過此錯誤,以便將成批的csv導入mysql。
手動將@file
替換為實際路徑(例如,使用JREPL.BAT ),將結果保存在另一個.sql文件中,並與mysql一起使用。
set "str=%%c"
SETLOCAL ENABLEDELAYEDEXPANSION
call set "str=%%str:\=/%%"
call jrepl "@file" "'!str!'" <D:\Dev_Algo\Grt_pce\query0.sql >query.sql
ENDLOCAL
type query.sql | mysql --user=%DB_USER% --password=%DB_PWD% --database=%DB%
並刪除SET @file=@fpath;
sql文件中的一行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.