【问题标题】:How to create a dynamic table structure in SQL from multiple delimited text files?如何从多个分隔的文本文件在 SQL 中创建动态表结构?
【发布时间】:2013-05-18 10:02:53
【问题描述】:

我有大约 100,000 多个分隔文本文件(它们在每个文件中的列数不同,例如,有些文件有 10 列,有些有 20 列,依此类推)。我需要将它们全部上传到 SQL 服务器。请建议我该怎么做?

我还有一个 Excel 电子表格,其中列出了存储文件的名称/路径以及每个文本文件中的列数。我不知道该怎么做。

提前致谢

【问题讨论】:

  • 在 SQL 列中需要数据类型和名称。您是否在任何地方存储了任何东西来告诉您这应该是什么?我建议您将所有文件作为一个 VARCHAR 列加载到临时登台表中。然后有一些 VBA 或动态 SQL 读取该临时登台表中的数据以创建一些动态 SQL,该 SQL 将创建一个真实表以将数据复制到。

标签: sql sql-server excel csv vba


【解决方案1】:

我假设您能够使用 C#(或其他编程语言)创建一个可以帮助您完成任务的应用程序。该程序应执行以下操作:

  1. 遍历所有文件并确定您需要的所有列。

  2. 在 SQL Server 上创建一个包含程序找到的列的表。为每一列设置数据类型varchar(max)。

  3. 再次运行所有文件并将数据插入表中。有两种方法可以去:

    a) 逐行插入数据。很慢,但很简单。

    b) 如果您使用 C#,您可以实现自己的 DataReader 并使用 SqlBulkCopy 类将数据批量插入表中

这里有一些链接可以帮助你:

http://www.sqlteam.com/article/use-sqlbulkcopy-to-quickly-load-data-from-your-client-to-sql-server

http://www.michaelbowersox.com/2011/12/22/using-a-custom-idatareader-to-stream-data-into-a-database/

http://daniel.wertheim.se/2010/11/10/c-custom-datareader-for-sqlbulkcopy/

【讨论】:

  • 抱歉,除了 Excel/SQL/VBA,我无法访问任何内容。命令提示符也被阻止。
  • 可能你可以在VBA上写,但是很难
猜你喜欢
  • 2017-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多