【问题标题】:import selected data from flat file into Microsoft SQL server management studio 2008将选定数据从平面文件导入 Microsoft SQL Server Management Studio 2008
【发布时间】:2016-04-18 14:45:31
【问题描述】:

这可能是一个重复的问题,但我找不到答案。请帮我! :)

我有一个大型数据集,我不想将整个数据集导入服务器: 1. 需要很长时间。 2. 由于来自本地平面文件,因此内存不足。

因此,我只想导入选定的数据,例如某个时间段的数据。

这是一个例子:

姓名、年龄、开始日期

a,24,20150102

b,23,20150304

c,28,20160419

假设我只想要 2015 年的行 - 过滤掉 2016 年的第三行。在导入期间如何做到这一点(不导入整个数据集然后运行选择)?我目前正在为我的查询使用向导和批量插入。

bulk insert [a].[dbo].[testdata]
from 'C:\fakepath\testdata.txt' 
with 
(firstrow=2,
fieldterminator = ',', 
rowterminator = '\n')

如果无法过滤,在加载过程中将数据集切成两半也可以。

请帮帮我,谢谢!

【问题讨论】:

  • bulk insert 相当不灵活,要么全有,要么全无。愿我在这里给出的答案对你有所帮助:stackoverflow.com/questions/36593116/…
  • 感谢您的回复。链接中的解决方案仍然需要将所有数据加载到一个表中。我想知道如何部分加载数据。 (如果这不起作用,我绝对可以使用其他导入方法而不是批量插入。:))

标签: sql-server sql-server-2008 import


【解决方案1】:

根据标准选择数据是数据库引擎的工作。所以,如果你想过滤数据,那么你需要它在一个表中,这样你就可以使用 SQL Server 引擎。

Management Studio 不是引擎。是一个解析器。它将查询传递给引擎并向您显示结果。

使用 BULK INSERT 的 FIRSTROW 和 LASTROW 参数来导入文件的一部分。

BULK INSERT (Transact-SQL)

例子:

bulk insert [a].[dbo].[testdata]
from 'C:\fakepath\testdata.txt' 
with 
(firstrow=2000,lastrow=3000
fieldterminator = ',', 
rowterminator = '\n')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-10
    • 2014-04-24
    • 2019-04-05
    • 1970-01-01
    • 2021-03-06
    • 2023-03-12
    • 2012-07-06
    • 2010-12-12
    相关资源
    最近更新 更多