簡體   English   中英

從批處理傳遞參數到mysql文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM