Command-Line

在輸入文件中使用 cat

  • March 21, 2017

我有一個用 mysqldump 創建的文件,大小為 11GB。我需要使用“mysql”命令將其導入數據庫,但我需要添加:

USE db1;

在頂部。重寫文件需要很長時間。有沒有一種方法可以在輸入重定向的開頭連接另一個文件以欺騙它以將其視為單個文件?

text.txt內容:

USE db1;

sql_out.sql內容:

data from mysqldump using the --skip-add-drop-table and --no-create-info options

嘗試的命令:

mysql --host=<host> --user=<user> --password=<pwd> < echo $(cat text.txt sql_out.sql)

當我這樣做時,我得到:

echo: No such file or directory

如果我在沒有迴聲的情況下嘗試它,我會得到:

$(cat text.txt sql_out.sql): ambiguous redirect

有沒有辦法做到這一點?

您可以通過管道輸入:

cat text.txt sql_out.sql | mysql --host=...

或者,為了避免必須創建一個新文件:

(echo "USE db1;"; cat sql_out.sql) | mysql --host=...

您可以在此處使用流程替換:

mysql --host=<host> --user=<user> --password=<pwd> < <(cat text.txt sql_out.sql)

語法<(...)將程序視為文件

引用自:https://unix.stackexchange.com/questions/352920