2016-12-14 71 views
0

我有一个Excel文件,其中有一个包含100000(100K)行的employee_ID列, 我有一个Oracle数据库中有5000000(500万)行的雇员表,表包含2列:employee_ID和employee_name。如何在Excel文件中从Oracle中检索值

什么是添加Employee_name列在Excel文件中的最有效的方法是什么?

在Excel文件中添加一列:

="SELECT employee_name FROM employee WHERE employee_id = "&A1&" UNION ALL" 

(假设 如果你想迅速做到这一点,但不尝试自动读取Excel的值到数据库,然后预先感谢您

回答

0

员工id从单元格A1开始并沿着行排列)。

然后:

  • 复制粘贴上述式向下对每个包含员工ID的行。
  • 选择你刚刚为100,000行生成的SQL并将其复制粘贴到一个文本文件中。
  • 在最后一行用分号;
  • 保存文件替换UNION ALL
  • 运行在SQL/Plus或SQL /开发人员的文件(或另一IDE)和滑阀/输出重定向到一个文件中。
  • 复制/粘贴从数据库返回到Excel中生成的数据。
  • 删除用于生成SQL的列。

为了保持秩序,你可以使用的值:

="SELECT "&ROW()&" AS rn, employee_name FROM employee WHERE employee_id = "&A1&" UNION ALL" 

之前再加入这一行:

SELECT employee_name FROM (

,并在末尾,将最终UNION ALL有:

) ORDER BY rn; 
+0

谢谢您的回复,使用这种方法,我确定oracle会保持相同的顺序吗? – JamDak

+0

它应该和你总是可以手动生成一些样本名称来检查它。如果您使用的是并行查询,那么它可能会有所不同,并且有些技术可以用来解决这个问题 - 我会在几个小时内添加更新。 – MT0

+0

更好:'“SELECT EMPLOYEE_ID,EMPLOYEE_NAME FROM EMPLOYEE WHERE EMPLOYEE_ID =”&A1&“UNION ALL”'。这将生成一个包含“EMPLOYEE_ID”和“EMPLOYEE_NAME”的结果集,因此您不必担心ID和名称之间的对应关系。然后,只需使用查询结果替换电子表格中的所有行即可。祝你好运。 –

0

你可以拉5万条记录Oracle使用Power Query轻松导入Excel(尤其是2013+)。您可能需要从Oracle网站下载一些驱动程序,但在此之后,您的过程将非常简单。

1)查找出来,如果你需要下载PowerQuery您的Excel

2版)尝试:新的疑问 - >从数据库 - >从Oracle数据库

3)下载所需的驱动程序(如果需要的话)为Oracle

输入服务器的详细信息和凭据,这会为你设置的连接。如果您不喜欢连接此方法,则可以在PC上设置ODBC数据源并执行相同的步骤,但步骤2看起来不同......

2)新建查询 - >自其他来源 - >从ODBC

4)研究了一些关于PowerQuery和PowerPivot的。

如果你花时间设置它,你的生活会变得更容易。

+0

感谢您的这个想法,我下载并安装了Power Query但它只能加载1 048 576行(​​虽然它在右侧面板中显示它装载了500万行),如果我找出如何显示全部500万行然后我会做一个vlookup,你认为这是最好的方法?预先感谢您 – JamDak

+0

假设这是您的“数据表”,并且您在“查找表”中有其他一些具有特征的值,则不应使用VLOOKUP!当您在Excel中使用数据模型时,因为您在Excel中管理大型数据集的新方式不是使用数百万个公式,而是通过建立表之间的关系。如果你转到Excel中的“管理数据模型”,你应该找到你的5MM数据表。现在您需要添加查找表并创建关系。一旦你这样做,就不需要制作“组合表”,你可以利用这种关系创建出色的数据透视表。 – procpy