【问题标题】:Import only certain records based on a criteria into a SQL server database仅将基于条件的某些记录导入 SQL Server 数据库
【发布时间】:2014-09-13 16:58:16
【问题描述】:

在上一个问题中,我询问了如何从 csv 文件导入 sql server 中的前 1000 行。 Link to my previous question

现在我想知道是否可以根据特定条件仅导入特定记录。例如,我的 csv 文件中的一列称为 Style。我想导入样式等于“ALE22”的所有记录。

这是目前为止对我有用的代码,

USE MyDB
BULK INSERT MyTable
FROM 'C:\Users\jasons\Desktop\Documents\MyFile.csv'
WITH(
FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
LASTROW = 1002
)

【问题讨论】:

  • 我认为这不是一步就能完成的。但是,您可以像以前一样导入它,然后根据您想要的过滤器使用查询来执行 SELECT INTO 任何您想要的表。
  • @SchmitzIT 有正确的想法。将其放入临时表中,然后将值选择到生产表中。

标签: sql sql-server csv


【解决方案1】:

您可以使用openrowset 批量提供程序在一个语句中执行此操作,但您必须指定一个格式文件来描述列名和分隔符。

insert into x (
    v1, v2
) select top 1000
    *
from
    openrowset(bulk 'C:\Users\jasons\Desktop\Documents\MyFile.csv',
        formatfile = 'path_to_ff',
        firstrow = 2
    ) x
where
    x.Style = 'ALE22';

您还可以调查openrowset 的文本提供程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    相关资源
    最近更新 更多