You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用SQL Server导入导出向导及建议数据类型批量设置.csv数值列类型

批量设置目标数值列数据类型的解决方案

针对你遇到的SQL Server 2016导入导出向导批量修改数值列数据类型的问题,结合你已经使用Suggest Types的前提,给你两个实用的方案:

方案1:利用向导内置的批量选择功能(快速上手)

虽然你有数百列,但可以通过排序快速筛选并批量修改:

  • 走到导入向导的Select Source Tables and Views页面,选中要导入的表,点击右侧的Edit Mappings按钮。
  • 在弹出的映射窗口中,点击Destination Data Type列的表头,让所有列按数据类型排序——这样所有被Suggest Types识别为数值类型的列会集中在一起(比如floatmoney等)。
  • 按住Shift键选中连续的数值列组,或者按住Ctrl键选中分散的数值列,然后在选中区域的Destination Data Type下拉框里选择numeric,并设置你需要的精度和小数位数(比如numeric(18,2))。
  • 确认修改后,继续完成向导的后续步骤即可。

方案2:生成SSIS包后批量编辑(适合超大量列)

如果方案1的批量选择还是太繁琐,或者列的分布太分散,可以通过编辑SSIS包的XML内容来批量替换:

  1. 在导入向导的Select Source Tables and Views页面,不要点击完成,而是选择Save SSIS Package,将包保存到本地文件系统(比如命名为BalanceSheetImport.dtsx)。
  2. 用文本编辑器(推荐Notepad++这类带批量替换功能的工具)打开这个.dtsx文件,它本质是XML格式的配置文件。
  3. 先确定Suggest Types给数值列映射的源数据类型,比如常见的DT_R8(对应float)、DT_CY(对应money)。然后批量替换目标数据类型:
    • 搜索所有包含<DataType>DT_R8</DataType>的节点,替换为:
      <DataType>DT_NUMERIC</DataType>
      <NumericPrecision>18</NumericPrecision>
      <NumericScale>2</NumericScale>
      
      (根据你的实际需求调整NumericPrecisionNumericScale的数值)
    • 同理,对其他数值类型的源数据类型(比如DT_CY)做同样的替换。
  4. 保存修改后的.dtsx文件,你可以直接通过dtexec.exe命令行执行这个包:
    dtexec /f "C:\Your\Package\Path\BalanceSheetImport.dtsx"
    
    或者回到导入向导,选择Run a saved SSIS package来执行它。

注意:编辑XML文件时,最好先备份原包,避免误改导致包损坏。如果你的数值列有不同的精度需求,可以先筛选出对应精度的列再做针对性替换。

内容的提问来源于stack exchange,提问作者iraserd

火山引擎 最新活动