将平面文件导入 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。

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