我有一个包含20列的大型数据库(大约50,000行),我希望根据第三列(称为FEATURE_CLASS)中的值“拆分”数据。FEATURE_CLASS的值都是VARCHAR()类型,我想要创建许多表,我需要用许多小的表替换单个大表,每个表的标题都是原始表的FEATURE_CLASS值。
我不确定这样做的最佳方法,我考虑的是创建一个临时表,该表用作索引,每一行包含一个唯一的FEATURE_CLASS值,然后迭代临时表,并对临时表的每一行执行复制操作。我真的不知道从哪里出发,任何帮助/想法都将不胜感激。谢谢!
发布于 2017-07-05 00:36:53
基本思想是创建一组语句的结果集,这些语句将为您创建表并填充正确的数据。运行下面的代码以生成语句。然后,您可以手动执行这些语句(复制/粘贴),也可以在脚本中执行这些语句。
Server示例
SELECT DISTINCT
'SELECT * INTO [' + TableName.FEATURE_CLASS + '] FROM TableName WHERE FEATURE_CLASS = ''' + TableName.FEATURE_CLASS + ''';'
FROM
TableName如果FEATURE_CLASS列中有任何特殊字符,则可能需要考虑在上面的脚本中删除这些字符,以防止表名无效或难以使用。
例如:
...
'SELECT * INTO [' + REPLACE(TableName.FEATURE_CLASS, '.', '') + '] FROM TableName WHERE FEATURE_CLASS = ''' + TableName.FEATURE_CLASS + ''';'
...MySQL示例
SELECT DISTINCT
CONCAT('CREATE TABLE `', DB1.FEATURE_CLASS,
'` AS SELECT * FROM DB1 WHERE FEATURE_CLASS = ''',
DB1.FEATURE_CLASS, ''';') AS statements
FROM DB1;这将为您提供一个MySQL命令,如下所示:
CREATE TABLE `feature_class_value` AS
SELECT * FROM DB1
WHERE FEATURE_CLASS = 'feature_class_value';有关创建表、选择选项https://dev.mysql.com/doc/refman/5.7/en/create-table-select.html的更多信息,请查看https://dev.mysql.com/doc/refman/5.7/en/create-table-select.html文档。
https://stackoverflow.com/questions/44915069
复制相似问题