sql - 如何优化包含没有唯一值的字段的插入 SQL 查询?

标签 sql sql-server database azure

我有一个临时表,其所有字段都是 varchar,并且该表中没有唯一值/id。我正在转换并插入到另一个具有正确数据类型的表中,但查询运行大约 6 小时才能写入 1500 万条记录。由于字段不包含唯一值,如何优化插入 SQL 查询?

我的代码

INSERT INTO reportingTable
(      
    [activityYear]
    ,[stateCode]
    ,[countyCode]
    ,[loanAmount]
    ,[loanToValue]      
)
SELECT 
    CAST(activityYear AS INT) AS activityYear,
    CAST(stateCode AS varchar(2)) AS stateCode,
    CAST((CASE WHEN ISNUMERIC(countyCode) = 0 then '-99999999' else countyCode END ) AS INT) AS countyCode,
    TRY_CAST(TRY_CAST(loanAmount as float) as BIGINT) AS loanAmount,
    TRY_CAST((CASE WHEN loanToValueRatio='Exempt' THEN '-88888888' WHEN ISNUMERIC(loanToValue) = 0 THEN '-99999999' else TRY_CAST(loanToValue as FLOAT) END ) AS NUMERIC(14,2)) AS loanToValue,
FROM stagingTable

示例数据

<表类=“s-表”> <标题> 事件年份 状态代码 国家/地区代码 贷款金额 loanToValue <正文> 2018 纽约 不适用 20000 不适用 2018 NC 36047 105000 豁免 2019 IA 42003 435000 10.05 2019 PA 36087 305000 74 2020 CA 6095 65000 90 2020 MO 12115 45000 80 2020 纽约 不适用 105000 65.11 2021 NC 36047 65000 95 2021 IA 42003 65000 85 2021 IA 19061 55000 不适用 2021 纽约 19153 225000 55.73 2021 纽约 19153 300000 60 2021 NC 36047 600000 80 2021 NC 6085 10000 豁免

非常感谢您的帮助,谢谢

最佳答案

您可以使用“SQL Server 导入和导出向导”工具将数据输出为平面文件。然后在目标表中输入批量插入。 另一种解决方案是使用SSIS中的ETL处理工具。

关于sql - 如何优化包含没有唯一值的字段的插入 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72803241/

相关文章:

sql - 在 SQL 中使用记录作为表名

mysql - sql表的同一列如何添加两个字段?

mysql - 需要有关加快 MySQL 查询速度的建议

SQL - 使用 select 使用先前的非空值更新列的空值

SQL插入函数(插入增量值)

php - 从phpmyadmin导入sql数据库时出错

sql - 在Oracle查询中显示总计、小计、百分比

sql-server - SSIS 自定义组件 salesforce 源 (kingswaysoft) 未通过 BIML 正确配置

c# - 在 UWP 中将 Entity Framework 与 SQL Server 结合使用

mysql - 如何在数据库中存储可变大小的关系?