[英]MySQL to MariaDB - Dynamic Columns?
我正在嘗試將數據從old_table
傳輸到table
,其中一些數據位於動態列中以供將來導入
INSERT INTO `table` (`col_1`,`col_2`,etc.... `attributes`)
SELECT `col_1`,`col_2`,etc.... COLUMN_CREATE('name',`col_99` AS UNSIGNED,'name2',`col_100` AS CHAR)
FROM `old_table`
關於動態表的唯一文檔基本上是
COLUMN_CREATE('name',1 AS UNSIGNED)
這不是一個非常“動態”的例子......
對其他解決方案開放但不是 JSON,但更喜歡 MariaDB,因為它本質上是我習慣的 MySQL
編輯:非常感謝您的回答,但有關更多信息,我正在嘗試使用此處記錄(嚴重)的這種方法: https : //mariadb.com/kb/en/dynamic-columns-functions/
編輯 2:我想知道 EAV 是否可能是唯一的解決方案,因為我似乎遇到了 MariaDB 動態列的問題,我在任何地方都找不到更多文檔或指南!
編輯 3:這些動態列仍然沒有運氣? MariaDB 真的很混亂!
這是你想要的嗎?
INSERT INTO `table` (`col_1`, `col_2`, . . . col_99, col_100)
SELECT `col_1`, `col_2`, . . ., 'name' as col_99,
CAST(NULL as char) as col_100
FROM `old_table`;
只需列出帶有別名的列; 對新列使用常量。
對於動態列、JSON 或 EAV,您可以省略 NULL“列”。 您只需包含非空的項目。
我建議你放棄動態列; 它們只存在於那個地方。 與此同時,JSON 正變得越來越被接受。 即使您使用的是“舊”版本的 MariaDB 或 MySQL,您也可以將 JSON 文本放在TEXT
列中。
請記住,沒有一種類似 eav 的技術是非常干凈的。
更多關於問題空間: http : //mysql.rjweb.org/doc.php/eav
至於“更可搜索”——您可能需要做出妥協:
INDEXes
生成列。FULLTEXT
索引。 只需將其全部放入一個文本列中即可進行高效搜索。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.