【发布时间】:2018-10-21 22:21:48
【问题描述】:
我(理论上)将数据从 CSV 文件导入 SQL Server 数据库,如下所示:
Accounts.csv:
AccountID,AccountHolder,Balance
ABC-1234,Person A,100000.50
CDE-4567,Person B,30.75
FGH-8910,Person C,25.00
Transactions.csv
FromAccount,ToAccount,TransferAmount
FGH-8910,FGH-8910,25
ABC-456,FGH-8910,28
FGH-8910,CDE-4567,60
假设我正在将此数据集成到我现有的表(Account 和 Trans)中,它们具有与上述相同的结构,但我有不同的帐号系统(我的 Account 表的 AccountID 列是 @ 987654327@)
我可以使用 SQL Server 导入和导出向导将 Accounts.csv 导入 Accounts 表并排除 AccountID 列,这三个帐户将被导入Account 表,AccountID 将由标识列分配。
但是,当我来导入 transactions.csv 时,我有旧帐号。
然后如何导入 Transactions.csv 并将 accountID 替换为由标识列分配的新 AccountID?
我怀疑这可以在 SSIS 中完成,但我想知道是否还有使用 OPENQUERY / BULK IMPORT 的方法?
【问题讨论】:
-
可以安全地假设账户的交易表上也会有一个 FK 吗?
-
@RossBush 在我们要导入的数据库上,是的(在 FromAccount 和 ToAccount 列上
-
您无法按照您描述的方式使用批量导入来匹配新 id。
-
SSIS 是我唯一的选择吗?
-
视情况而定,您将不得不在某个时候对数据进行后期处理。
标签: sql csv ssis sql-server-2012 etl