希望这只是快速修复,但是当我执行任何选择查询时,例如,
SELECT table_name
FROM table_info
WHERE load_order IS NOT NULL
ORDER BY load_order;
它始终将列名添加到结果中。在这种情况下,结果是,
table_name settings tax tax_rate sales_tax_zone sic
naics exempt_reason wh pack pcat route supply_point
point credit_status fuel_type participant site salesman
driver truck profit terms vendor product pump customer
card card_fuel_type tax_certificate prodware prodware_price
以下是bash脚本的片段:
TABLES=` (
echo -n "select table_name from table_info "
echo -n "where load_order is not null "
echo "order by load_order;"
) | mysql -uuser -ppassword database`
通过以下方式解析:
for TABLE in ${TABLES}
do
if [ $TABLE != 'table_name' ]
do_table #Start the load process
fi
done
问题是脚本相当大(~2000)行并且有很多选择查询。有没有我可以传递给mysql的选项,它会排除列名?
找到解决方案:我需要在调用mysql时使用--skip-column-names选项。感谢所有答案。
答案 0 :(得分:1)
以下是您问题的答案:
mysql CLI手册页说明了“--column-names”的选项。试试吧。
以下是你没有问过的问题的答案:
是的,你应该采取另一种方式。删除一些实际上为您提供数据库连接的语言,而不是通过管道运行“许多选择查询”!
答案 1 :(得分:0)
听起来这就是结果集中返回的列名。
要从shell脚本处理此问题,请尝试修改处理结果的代码。以某种方式跳过第一个结果,因为它是列的名称。
伪代码:
for each result in myResultSet
if result != myResultSet[0]
begin
//include this result.
end
next
答案 2 :(得分:0)
将选择更改为阅读
SELECT table_name as ` `
FROM table_info
WHERE load_order IS NOT NULL
ORDER BY load_order;
或
SELECT table_name as `\0`
FROM table_info
WHERE load_order IS NOT NULL
ORDER BY load_order;