当前位置: 首页 > 面试题库 >

sql批量插入附加列

伊羽
2023-03-14
问题内容

一个csv文件包含8列(col1,col2,…,col8),文件名也包含必须插入表中的日期。

如果表中的列数与csv文件中的列数相等,则以下查询将所有记录从文件导入到表中:

query += "BULK INSERT real_data FROM '" + path + "' WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n')";

到目前为止,我还没有找到一种解决方案来修改查询,以便新记录可以包含从文件名中提取的日期。无论如何,我已经创建了一个提取日期的函数:

DateTime eventTime = extractDate(path);

并想将eventTime插入到从文件导入的每个记录的第9列中。

有谁知道如何修改/创建查询语句以从文件中导入8列,并为每个导入的记录将日期添加为第9列?

谢谢!


问题答案:

您不能向使用BULK INSERT命令加载的数据集添加“任意列”。(如果您想处理它们的复杂性,SSIS包可以做到这一点。)

以下技巧有些复杂,但是我已经成功使用了几次:

  • 确定额外列的名称和要加载到其中的值(例如,MyDate和“ 1980年1月1日”)
  • 基于该表(ATLER TABLE MyTable添加约束DF_TempLoad缺省MyDate的默认值’Jan 1,1980’)在表上创建一个(临时)默认值[ 检查语法,它可能是关闭的 ]
  • 在表上创建一个(临时)视图,仅列出要批量插入的那些列
  • 对视图运行BULK INSERT;未包含在视图中的列将被分配默认值
  • 放下视图
  • 删除默认约束。


 类似资料:
  • 我正在尝试批量插入到具有标识列的表中。但我的主机文件包含标识列的空值。当我发出“bcp”命令时,我得到一个错误- 正在开始复制。。。 SQLState=S1000,NativeError=0 错误=[Microsoft][SQL服务器本地客户端10.0]在BCP数据文件中遇到意外的EOF SQLState=23000,NativeError=515 错误=[Microsoft][SQL Serve

  • 我正在写一个数据挖掘程序,可以批量插入用户数据。 当前SQL只是一个普通的批量插入: 如果发生冲突,如何进行更新?我试过: 但它抛出

  • 问题内容: 我正在寻找一种对重复键Update(例如SQL Server 2005中的操作)执行插入的解决方案。此操作可能会插入或更新大量条目。SQL Server 2008有一个整洁的操作MERGE,可以很好地完成它,问题是我们只能使用SQL Server2005。 我研究了标准的解决方案,但是它们都不是很好,因为它们假定只有一个入口已更新/插入。 有谁知道在旧版SQL Server中复制MER

  • 问题内容: 我有以下查询要插入到表中 得到消息 消息4860,级别16,状态1,行1 无法批量加载。文件“ c:\ Type.txt”不存在。 该文件显然在那里。我可能会忽略什么? 问题答案: 看一下: 无法批量加载。文件“ c:\data.txt”不存在 该文件在SQL Server的驱动器上吗? SQL BULK INSERT等始终只能与SQL Server计算机上的本地驱动器一起使用。您的S

  • 问题内容: 这是我在阅读有关jpa批量插入的几个主题之后创建的简单示例,我有2个持久对象User和Site。一个用户可以拥有多个站点,因此我们在这里有一对多的关系。假设我要创建用户并将多个站点创建/链接到用户帐户。考虑到我愿意为Site对象使用批量插入,代码如下所示。 但是,当我运行此代码时(我将hibernate方式用作jpa实现提供程序),我看到以下sql输出: 所以,我的意思是“真实的”批量

  • 问题内容: 我正在尝试将.csv文件插入具有UNIX换行符的数据库中。我正在运行的命令是: 如果我将文件转换为Windows格式,则可以进行加载,但是如果可以避免,我不想执行此额外步骤。有任何想法吗? 问题答案: 由于遇到同样的问题,我感到非常有必要做出贡献,而且我每天至少需要几次从SAP中读取2个UNIX文件。因此,我不需要使用unix2dos,而是需要较少的人工干预和更多的自动编程功能。 如前