Один из распространенных способов решения этой проблемы - использовать функцию оболочки, называемую здесь документом, попробуйте это:
sqlite3 /Users/user/Documents/Test/dbName.dba <<EOS
insert into myTable (Date, Details, Category, Average)
values(datetime('now','localtime'), '$1', '$2', '$3');
select "Category1 total = " sum(Average) from (
select * from myTable where Category = 'category1'
);
select "Category2 total = " sum(Average) from (
select * from myTable where Category = 'category2'
);
EOS
Обратите внимание, что EOS может быть любой строкой, которая вам нравится (я думаю о EndOfScript), ноон должен быть один в последней строке текста без запаздывающих пробелов.
Поскольку я не использую sqlite3, вам может потребоваться некоторая статистика, чтобы закрыть пакет, о котором я не знаю.Кроме того, я не уверен, что вещи за $ 1 будут работать, если sqlite3 простителен, попробуйте вместо этого «$ 1» и т.д.Кроме того, вам может понадобиться запятая после строки "CategoryN total = "
.
Обратите внимание, что это решение позволяет вам создавать свои SQL-операторы DML настолько большие / длинные, насколько вам нужно.Для вещей, которые будут происходить регулярно, и это касается больших таблиц, если у вас есть разрешения в нашей системе, вы можете захотеть, чтобы ваш DML использовал хранимую процедуру и вызывать ее.
Надеюсь, это поможет.* (Если это не работает, пожалуйста, отредактируйте свой пост, чтобы указать, какую оболочку вы используете, OS / Linux Ver и минимальную версию сообщений об ошибках, которые вы получаете).