SQL Server使用查找转换导入的数据

时间:2018-05-11 13:24:46

标签: sql csv ssis sql-server-2012 etl

我(理论上)从CSV文件将数据导入SQL服务器数据库,如下所示:

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

让我们说我正在将这些数据整合到我现有的表格AccountTrans)中,这些表格具有与上面相同的结构,但我有一个不同的帐号编号系统(我的Account表& #39; s AccountID列为INT IDENTITY(1,1)

我可以使用SQL Server导入和导出向导将Accounts.csv导入Accounts表并排除AccountID列,这三个帐户将导入Account表,并且AccountID将由身份分配列。

但是,当我来导入transactions.csv时,我有旧帐号。

如何导入Transactions.csv并将accountID替换为标识列指定的新AccountID?

我怀疑这可以在SSIS中完成,但我想知道是否有办法使用OPENQUERY / BULK IMPORT

2 个答案:

答案 0 :(得分:0)

首先处理Accounts.csv ids,向文件添加新的id列,或使用新的帐户ID生成新文件。

然后通过将旧帐户ID替换为新帐户ID来预处理事务文件。

最后,处理新的交易文件。

答案 1 :(得分:0)

从CSV文件中插入临时表dbo.Account_Staging(不带IDENTITY列)

编辑/清理/操纵导入的数据

使用T-SQL语句将数据复制到实际表中,如:

INSERT INTO dbo.Account (AccountHolder,Balance)      
SELECT AccountHolder,Balance FROM dbo.Account_Staging