【发布时间】:2016-03-03 19:37:38
【问题描述】:
我似乎找不到这个非常琐碎问题的答案。
我想将数据从.csv 文件(列数未知,以逗号分隔)文件批量导入现有数据库中的新 SQL Server 表。如果表是预定义的,BULK INSERT 语句可以正常工作,但由于我不知道.csv 文件的列数,所以这不起作用。
我尝试将 bulk 与 openrowset 结合使用,但无法正常工作。
顺便说一句:在这种情况下,SSIS 不是一个选项,因为我想将查询合并到 R (sqlquery) 或 Python 中。
我们将不胜感激!
【问题讨论】:
-
只是为了清楚。您希望接收各种宽度和长度的文件 (.csv),并希望以编程方式将它们导入到一个新表中,每个文件一个,导入到您的 MS-SQL 数据库中。这是对您问题的正确解释吗?
-
是的。理想情况下,我编写了一个查询,我总是可以使用它来将 .csv 导入到新表中。 .csv 文件的第一行包含列名。
-
这似乎是一场等待发生的意外。使用 SQL Server 导入和导出向导(基于每个文件)有什么问题?
-
我必须每天为多个 .csv 文件执行此操作,并且想要安排它。 .csv 文件命名方便,可用作新表的名称。我理解您的评论,但认为在这种情况下,以编程方式导入数据会对我有很大帮助。
-
在文件格式不固定时导入数据异常困难。如果我必须这样做——相信我,我只会在对决定使用流动数据格式的人发誓之后才会这样做——我会使用 PowerShell 或 Python 之类的东西来读取和解析文件,使用启发式确定文件格式,然后在插入数据之前创建目标表。我的目标格式很可能是一个表,所有字段都为 VARCHAR 字段,并且可能根本没有主键。
标签: sql sql-server csv bulkinsert