每個星期,我都必須完全替換幾個非常大的MySQL表中的數據。因此,我通常會做的是刪除現有數據,導入新數據,然後運行我通常的查詢以根據需要修改新數據。MySQL表格:我如何從所有字段中刪除特定字符?
不幸的是,這些天我注意到新數據包含不需要的字符,如引號和額外的空格。在這些表格(AFAIK)的某些表格中,有超過100,000條記錄,我無法在記事本中輕鬆打開數據以在導入之前去除不需要的字符。
我知道我可以寫一個單獨的查找,並在每個表代替查詢每一個列,例如:
UPDATE mytablename SET mycolumn = REPLACE(mycolumn, '"', '');
但有來命名每列是一個麻煩。無論如何,我想找一個更優雅的解決方案。今天,我發現在互聯網上的一個片段,看起來像一個開始:
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE
table_name = 'myTable' and ordinal_position = 1
我想下一步可能是遍歷序號位置,然後更換和更新每個列,但我不知道如何在MySQL中做到這一點。我也不知道如何在到達最後一列後停止循環,以避免錯誤信息。
有沒有簡單的方法來做到這一點?還是我希望太多?
我是一個初學者,所以一個清晰,簡單的解釋將不勝感激。
在此先感謝。
更多信息:
- 由於我的第一篇文章,我發現,存儲過程不允許我的服務器上。太糟糕了。
- 不管怎麼說,我曾嘗試這個新的代碼,剛上手:
集@ mytablestring = 'MYTABLE';
set @ mycolumnnumber = 1;
set @ mycolumnname =(SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = @mytablestring and ordinal_position = @mycolumnnumber);
SELECT @mycolumnname FROM mytable;
不幸的是,在最終的SELECT查詢中,@mycolumnname被解釋爲字符串,而不是列名。所以查詢不起作用。如果我可以通過這個,我相信我可以編寫一些代碼來循環通過增加@mycolumnnumber列。
如果有人知道如何解決這個問題,我真的很感謝一些幫助。
非常感謝。
是否有任何理由你不」只是組裝一個腳本或編寫一個清理數據的SQL語句過程? – Thomas 2011-04-22 04:57:45
是的,有一個很好的理由:我不知道如何。當然,我可以編寫100個或更多不同的查詢來更新單個列,但我希望有一個更好的解決方案,其中一個查詢可以搜索整個表。有不少論壇在各種論壇上提出這個問題,但我從來沒有看到它以簡單的方式回答,也沒有求助於文本編輯器,也沒有爲每一列編寫單獨的查詢。所以我很想知道MySQL是否具有多功能和強大的功能來處理這種事情。謝謝。 – Inquisitive 2011-04-22 12:26:05