将平面文件导入 SQL 向导

适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例

有关导入和导出向导的相关内容,请参阅 SQL Server 导入和导出向导

利用导入平面文件向导可以轻松地将数据从平面文件 (.csv, .txt) 复制到数据库中的新表。 导入平面文件向导支持以逗号分隔的文件和固定宽度格式的文件。 本概述描述了使用此向导的原因、查找此向导的方法,以及可遵循的简单示例。

为什么使用此向导?

创建此向导的目的在于利用称为 Program Synthesis using Examples 的智能框架改善当前的导入体验 (PROSE)。 对于没有专业领域知识的用户来说,导入数据通常是一项复杂、易于出错并且乏味的任务。 此向导尽可能简化导入流程,只需要选择输入文件和唯一的表名称,PROSE 框架就会处理剩余的事情。

PROSE 分析输入文件的数据模式,以推断列名称、类型、分隔符等信息。 此框架了解文件的结构,完成所有复杂的工作,因此用户无需再做这些工作。

先决条件

此功能适用于 SQL Server Management Studio (SSMS) v17.3 或更高版本。 请确保使用最新版本。 可以在此处找到最新版本。

入门

要访问导入平面文件向导,请执行以下步骤:

  1. 打开 SQL Server Management Studio
  2. 连接 SQL Server 数据库引擎实例或 localhost。
  3. 展开“数据库”,右键单击数据库(下方示例的测试),指向“任务”,然后单击导入数据上方的“导入平面文件” 。

向导菜单

要了解有关向导不同功能的详细信息,请参考以下教程:

教程

为了实现本教程的目的,请随意使用自己的平面文件。 另外,本教程会使用 Excel 生成的以下 CSV,你可以随意复制。 如果使用此 CSV,则将其标题命名为“example.csv”,确保在容易找到的位置(如桌面)将其另存为 csv 。

向导 Excel

概述:

  1. 访问向导
  2. 指定输入文件
  3. 预览数据
  4. 修改列
  5. 摘要
  6. 结果

步骤 1:访问向导和简介页

访问如此处所述的向导。

向导第一页是欢迎页。 如果不想再次看到此页面,请随意单击“不再显示此起始页” 。

向导简介

步骤 2:指定输入文件

单击“浏览”选择输入文件。 此向导默认搜索 .csv 和 .txt 文件。 无论文件扩展名是什么,PROSE 都将检测文件采用的是逗号分隔格式,还是固定宽度格式。

新的表名称应该是唯一的,如果不是,向导不会允许执行下一步。

向导指定

步骤 3:预览数据

在向导生成的预览中,可以查看前 50 行。 如果出现任何问题,请单击“取消”,否则将会继续进入下一页面。

向导预览

步骤 4:修改列

向导会标识它认为正确的列名称、数据类型等。如果字段不正确,可以在此处编辑这些字段(例如,数据类型应该是 float 而不是int)。

检测到空值的列将选中“允许 Null”。 但如果你希望列中包含 null,并且不选中“允许 Null”,则可以在此处更新表定义以允许一列或所有列中包含 null。

准备就绪时,请继续。

向导修改

步骤 5:总结

这只是一个显示当前配置的摘要页面。 如果出现问题,可以返回到上一部分。 或者,单击“完成”尝试导入过程。

向导摘要

步骤 6:结果

此页面指示导入是否成功。 如果出现绿色的选中标记,表示成功;反之,可能需要检查配置或者输入文件是否出错。

向导结果

疑难解答

导入平面文件向导基于前 200 行检测数据类型。 在平面文件中的数据不符合自动检测到的数据类型的情况下,将在导入过程中出现错误。 错误消息类似于以下内容:

Error inserting data into table. (Microsoft.SqlServer.Prose.Import)
The given value of type String from the data source cannot be converted to type nvarchar of the specified target column. (System.Data)
String or binary data would be truncated. (System.Data)

缓解此错误的技术:

  • 扩展修改列步骤中的数据类型大小(如 nvarchar 列的长度)可能会补偿平面文件的其余部分中数据的变体。
  • 修改列步骤(尤其是较小数目)中启用错误报告,将显示平面文件中的哪些行包含不适合所选数据类型的数据。 例如,在第二行出现错误的平面文件中,使用范围为 1 的错误报告运行导入将提供特定的错误消息。 直接在所在位置中检查文件可以基于标识的行中的数据对数据类型进行更有针对性的更改。

报告结果时出错

Error inserting data into table occurred while inserting rows 1 - 2. (Microsoft.SqlServer.Prose.Import)
The given value of type String from the data source cannot be converted to type float of the specified target column. (System.Data)
Failed to convert parameter value from a String to a Double. (System.Data)

当前,导入程序使用了基于系统的活动代码页的编码。 在大多数计算机上,此项默认为 ANSI。

了解详细信息

了解有关向导的详细信息。

  • 了解有关导入其他数据源的详细信息。 如果要导入除平面文件外的其他内容,请参阅 SQL Server 导入和导出向导
  • 了解有关连接平面文件数据源的详细信息。 如果想要寻找有关连接平面文件数据源的详细信息,请参阅连接到平面文件数据源
  • 了解有关 PROSE 的详细信息。 如果想要寻找向导使用的智能框架的概述,请参阅 PROSE SDK