2011-04-07 62 views
1

的開始但願這只是權宜之計,但是當我執行任何選擇查詢,比如,的MySQL增加列名的結果

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

究竟你所顯示的第一行「搜索條件」是什麼意思? – vbence 2011-04-07 19:33:20

+0

搜索條件是我希望選擇的字段。在這種情況下,table_name。 – btl 2011-04-07 20:24:18

回答

1

聽起來就像是您的結果集中返回的列名稱。

要從shell腳本處理此問題,請嘗試修改處理結果的代碼。以某種方式跳過第一個結果,因爲它是列的名稱。

僞代碼:

for each result in myResultSet 
    if result != myResultSet[0] 
    begin 
     //include this result. 
    end 
next 
+0

是的,這是問題,我通過shell腳本運行它。 – btl 2011-04-07 19:00:30

+0

@btl:請使用腳本編輯您的問題,以及如何解析結果。 – 2011-04-07 19:01:34

+0

這實際上是我所需要的,但是我發現--skip-column-names選項正是我在調用mysql時所需要的。 – btl 2011-04-08 16:07:01

1

這裏的回答你的問題:

MySQL的CLI手冊頁說,有一個爲 「--column-名」 的選項。試試看。

而這裏的問題的答案,你沒有問:

是的,你應該做的是另一種方式。放入一些實際上爲您提供數據庫連接的語言,而不是通過管道運行「許多選擇查詢」!

+0

我希望我有使用另一種語言的豪華,不幸的是這是基於遺留系統,所以我堅持我所擁有的。謝謝你對這個選項的回覆,我會研究一下。 – btl 2011-04-07 23:51:55

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;