- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这些表:
create table person (
person_id int unsigned auto_increment,
person_key varchar(40) not null,
primary key (person_id),
constraint uc_person_key unique (person_key)
)
-- person_key is a varchar(40) that identifies an individual, unique
-- person in the initial data that is imported from a CSV file to this table
create table marathon (
marathon_id int unsigned auto_increment,
marathon_name varchar(60) not null,
primary key (marathon_id)
)
create table person_marathon (
person_marathon _id int unsigned auto_increment,
person_id int unsigned,
marathon_id int unsigned,
primary key (person_marathon_id),
foreign key person_id references person (person_id),
foreign key marathon_id references person (marathon_id),
constraint uc_marathon_person unique (person_id, marathon_id)
)
Person 表由包含大约 130,000 行的 CSV 文件填充。此 CSV 包含每个人的唯一 varchar(40) 和其他一些人数据。 CSV 中没有 ID。
对于每场马拉松比赛,我都会得到一个 CSV,其中包含 1000 到 30000 人的列表。 CSV 基本上只包含 person_key
的列表。显示哪些人参加了该特定马拉松的值(value)观。
将数据导入 person_marathon
的最佳方式是什么?表维护FK关系?
这些是我目前能想到的想法:
拉 person_id + person_key
从 MySQL 中取出信息并合并 person_marathon
PHP 中的数据获取 person_id
在插入 person_marathon
之前在那里表格
使用临时表进行插入...但这是为了工作,我被要求永远不要在这个特定的数据库中使用临时表
不要使用 person_id
完全使用 person_key
领域,但我将不得不加入 varchar(40)
这通常不是一件好事
或者,对于插入,让它看起来像这样(我必须插入 <hr>
否则它不会将整个插入格式化为代码):
insert into person_marathon
select p.person_id, m.marathon_id
from ( select 'person_a' as p_name, 'marathon_a' as m_name union
select 'person_b' as p_name, 'marathon_a' as m_name )
as imported_marathon_person_list
join person p
on p.person_name = imported_marathon_person_list.p_name
join marathon m
on m.marathon_name = imported_marathon_person_list.m_name
该插入的问题是要用 PHP 构建它,imported_marathon_person_list
将是巨大的,因为它很容易达到 30,000 select union
项目。不过,我不确定该怎么做。
最佳答案
我处理过类似的数据转换问题,但规模较小。如果我正确理解你的问题(我不确定),听起来让你的情况具有挑战性的细节是这样的:你试图在同一步骤中做两件事:
简而言之,我会尽一切可能避免在同一步骤中同时执行这两项操作。将其分为这两个步骤 - 首先以可接受的形式导入所有数据,然后再对其进行优化。 Mysql 是执行此类转换的良好环境,因为当您将数据导入 persons 和 marathons 表时,ID 已为您设置。
第一步:导入数据
完成数据导入后,您将拥有三个表:* persons - 你有丑陋的 personkey,以及一个新生成的 person_id,加上任何其他字段* marathons - 此时你应该有一个 marathon_id,对吧?要么是新生成的,要么是您从某个旧系统中继承的数字。* persons_marathons - 该表应该填写 marathon_id 并指向 marathons 表中的正确行,对吗?您还有 personkey(丑陋但存在)和 person_id(仍然为空)。
第二步:使用personkey为关联表中的每一行填写person_id
然后您要么直接使用 Mysql,要么编写一个简单的 PHP 脚本,为 persons_marathons 表中的每一行填写 person_id。如果我无法让 mysql 直接执行此操作,我通常会编写一个 php 脚本来一次处理一行。这样做的步骤很简单:
您可以告诉 PHP 重复这 100 次然后结束脚本,或者 1000 次,如果您不断遇到超时问题或类似的问题。
此转换涉及大量查找,但每次查找只需要针对一行。这很吸引人,因为您在任何时候都不需要要求 mysql(或 PHP)“将整个数据集放在头脑中”。
此时,您的关联表中的每一行都应该填入 person_id。现在可以安全地删除 personkey 列,瞧,你有了高效的外键。
关于php - 如何用PHP和外键导入 "a lot"的数据到MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17793322/
目前我正在创建一个 C# 应用程序,它必须从现有数据库中读取大量数据(超过 2,000,000 条记录),并将其与数据库中不存在的大量其他数据(也大约 2,000,000 条记录)进行比较。这些比较主
我正在为需要将一些可变长度数组存储到 mysql 数据库中的系统设计数据库。 数组的长度(最多)为数百甚至数千。 新阵列将定期创建,可能每天数十个。 我应该将这些数组存储到一个很快就会变得巨大的表中还
问题:我有两个大型字符串元胞数组A 和B。我想知道识别 A 中哪些元素包含 B 中哪些元素的最快方法。特别是不循环能不能做到? 最小示例:(我的实际 A 和 B 分别包含 7,000,000 和 22
我有这些表: create table person ( person_id int unsigned auto_increment, person_key varchar(40) n
我正在处理一个简单的页面,但遇到固定位置的问题。想知道是否有人有时间帮助我。 在这里复制粘贴所有代码会太多,但我会粘贴一个链接 http://et4891.com/lecture/protosite.
我正在开发一个项目,需要能够将“很多”、“一些”、“很多”、“一些”等修饰符分类为最小百分比 例如“很多” -> 80% 现在我正在考虑简单地创建一个大字典来关联这些修饰符和数值,例如 一些 -> 1
我想将所有数据从工作表复制到另一个新 Excel 文件的另一工作表。我试过这个: Set wkb = Workbooks.Add wkb.SaveAs myNewFile ThisWorkbook.W
项目运行良好,运行良好,编译良好。直到一些看似随机的时间,它才停止变好。 目前,我遇到了200个流浪错误: ./new:4: error: stray '\376' in program ./new:
我正在开发一个 Android(现在只是 Android,以后可能是 iOS)应用程序,它在很大程度上依赖于拍照,将这些照片存储在某个服务器上,并能够在用户需要时检索任何照片这将是非常频繁的。 在深入
我是 codeigniter 的新手,我刚刚学会使用 codeigniter 已经两周了。我在一个 Controller 中使用超过 26 个功能,每个功能加载不同的 View 。我的问题是,当我加载
下面是我的 3 个 cpp 文件和 2 个头文件。我收到了天文数字的错误,而且大多数都非常不清楚。我是 C++ 的新手并且有 C#/Java 背景。 我很清楚以下可能是语法错误。提前感谢您的帮助。 主
我必须在 Java 程序中存储大量单词 (+200k),并且我想快速访问它们。我只需要知道给定的单词是否属于我的“词典”。我不需要像 这样的一对.如果可能的话,我正在标准库中搜索解决方案。 PS:也
我正在开发一个集成了其他 SDK(例如 Facebook SDK 3.5)的 iOS SDK。为了防止冲突并允许我的客户也导入这些 SDK,我想重命名我的代码中的所有类/枚举(例如,将 FBSessi
我的游戏中有很多角色,因此我有很多纹理。当加载纹理图集(包含大约 5 个不同的图像纹理)时,它会增加内存使用并将其保持在该数量。因此,更多的纹理只会使该数字不断上升,直到有时应用程序崩溃。我不需要同时
哇,大戏!框架有很多静态方法。在我上学的地方,我们被告知永远不要使用任何静态,但 Play!像没有明天一样使用它。这样可以吗?如果有,为什么? 我们(我和 7 个人)计划使用 Play!涉及 Web
我需要更改表中列的值,所以我需要这样做: update members set frequence = 1 where frequence <> 1 我有 700 万行受到影响,我需要分批更新 100
嗨,当我尝试将我的应用程序部署到 Heroku 时,我遇到了一些错误。 当我 pip freeze>requirements.txt 时,我收到此错误: “警告:无法生成分发要求 -lotly 2.7
我用 pthread 编写了一个多线程程序,使用生产者-消费者模型。 当我使用英特尔 VTune 分析器来分析我的程序时,我发现生产者和消费者在 pthread_mutex_unlock 上花费了大量
我有一个要求,我必须缓冲大量数据(以 GB 为单位)以供将来使用。由于没有足够的 RAM 可用于缓冲如此大量的数据,我决定将数据存储在文件中。 现在这里的陷阱是,当我将数据写入文件时,其他线程可能需要
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 4 年前。 Improv
我是一名优秀的程序员,十分优秀!