我(理论上)从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
让我们说我正在将这些数据整合到我现有的表格Account
和Trans
)中,这些表格具有与上面相同的结构,但我有一个不同的帐号编号系统(我的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
?
答案 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