sql - 一行中的每个值都被视为新列 - 转换为可加载的数据文件
问题描述
我有一个数据文件,其中每一行值都显示为一个新的列条目。我想转换它或找到一个逻辑来使这个文件可加载到数据库中。以下是文件中数据的示例。
文件很大。它有超过 7000 列。我已尝试将其加载/导入到表中,但它超过了所有工具中的最大列限制
+--------+-----------+----------+----------+----------+------------+------------+------------+------------+
| emplid | status_0 | status_1 | status_2 | status_3 | location_0 | location_1 | location_2 | location_3 |
+--------+-----------+----------+----------+----------+------------+------------+------------+------------+
| 1234 | Submitted | Reviewed | Approved | Accepted | | California | Michigan | |
+--------+-----------+----------+----------+----------+------------+------------+------------+------------+
| 4568 | Submitted | Reviewed | Denied | | Texas | Utah | Illinois | NewYork |
+--------+-----------+----------+----------+----------+------------+------------+------------+------------+
+--------+-----------+------------+
| emplid | status | location |
+--------+-----------+------------+
| 1234 | Submitted | |
+--------+-----------+------------+
| 1234 | Reviewed | California |
+--------+-----------+------------+
| 1234 | Approved | Michigan |
+--------+-----------+------------+
| 1234 | Accepted | |
+--------+-----------+------------+
| 4568 | Submitted | Texas |
+--------+-----------+------------+
| 4568 | Reviewed | Utah |
+--------+-----------+------------+
| 4568 | Denied | Illinois |
+--------+-----------+------------+
| 4568 | | Newyork |
+--------+-----------+------------+
解决方案
您可以将数据文件加载到什么工具中?如果您可以将其加载到任何符合 SQL 的数据库中,则可以使用 SQL 查询,例如:
INSERT INTO master_status_table
(SELECT emplid, status_0, location_0) as x)
GO
INSERT INTO master_status_table
(SELECT emplid, status_1, location_1) as y)
GO
INSERT INTO master_status_table
(SELECT emplid, status_2, location_2) as z)
GO
但是,听起来您一开始就无法将其放入数据库。因此,您可以尝试将其加载到 EXCEL 电子表格中。然后,在电子表格中,假设您的原始数据在一个名为“原始数据”的工作表中,然后您将创建另一个名为“状态 0”的工作表,在该工作表中,您将有一个公式来显示内容来自“原始数据”(员工 ID)的“A”列以及“B”列和“F”列的状态和位置的同一行数据。然后工作表“状态 1”将具有相同但列“C”和“G”用于状态和位置等。一旦您拥有所有“状态”工作表,您可以将每个工作表导出为 .CSV 文件并导入直接进入你的master_status_table。
我知道这仍然是一个非常手动的过程,但应该是可能的。
推荐阅读
- go - 在 Go 中并发处理大量文件并上传到 S3
- istio - Istio + ExternalName + ElasticCache = 超时
- c# - Linq - 在其他两个之间选择周围的对象
- javascript - 如何调试在谷歌应用脚本中不相等的相同字符串?
- python - Discord.py Self Bot 获取所有用户 ID
- python - 使用 Python Discord 进行验证
- java - 是否可以在不同于授权的标头上验证 keycloak 令牌?
- python - 如何过滤 ManyToMany 对象的父属性?
- python - 当我尝试运行 pip 命令时出现“错误的文件描述符”错误
- python - 使用 word2vec 构建推荐系统