簡體   English   中英

是否可以使用mysqlimport設置MySQL會話變量?

[英]Is it possible to set MySQL session variables using mysqlimport?

我有一個使用unix的mysqlimport的導入作業,並且源數據是不可靠的,所以我需要設置sql_mode =“NO_ENGINE_SUBSTITUTION”,以便在出現錯誤時作業不會失敗。 我更願意為個人工作做這件事,但我不知道是否有可能。 有人知道嗎?

當前命令:

mysqlimport --compress --fields-terminated-by="," --fields-optionally-enclosed-by='"' --lines-terminated-by="\\n" --replace --local --user=username --password=password -h localhost dbname company_data.txt

我不熟悉mysqlimport,但手冊沒有列出一個選項。

由於mysqlimport只是LOAD DATA INFILE SQL語句的命令行界面,因此解決方法如下:

mysql -uuser -ppassword dbname -e "set session sql_mode='NO_ENGINE_SUBSTITUTION'; LOAD DATA INFILE 'company_data.txt' INTO ..." /*you can figure out the rest*/

這是LOAD DATA INFILE手動輸入

可以使用LOAD DATA INFILE語句而不是mysqlimport實用程序,這將允許您在DML語句之前設置sql_mode

但是 ,加載本地文件(即LOAD DATA LOCAL INFILE ...)時,設置SQL模式將不起作用。

這就是MySQL文檔對此的評價。

使用LOCAL或IGNORE,即使使用限制性sql_mode值,也會發生警告而不是錯誤,並且使用與非限制性SQL模式相同的最接近值行為插入行。 發生這種情況是因為服務器無法在操作過程中停止傳輸文件。

因此,除非您可以將文件放在與MySQL相同的服務器上,否則在加載該文件時無法確保數據的完整性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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