我正在研究一个MVC4项目,我偶然发现了这个问题。我试过寻找答案,但现有的答案似乎都不符合我的需求。
问题在于:我有一个SQL表(我们称之为TestTable),它包含以下列: - Id(PK) - 名称(非空) - 地址 - 城市 - 邮政编码 - Facebook - 推特 - 倡议 - 投票 - 行动 ...
我有一个包含以下列的.csv: - 名称 - initiative_no - number_of_votes - number_of_actions
使用SQL Server Management Studio附带的导入向导,将Id和名称导入TestTable一次。必须定期导入csv,其中包含更多最新数据。
现在问题是:我不知道如何将.csv中的数据导入TestTable,而不创建新的表格行。
我不知道语法是否完全正确,但我想做这样的事情:
插入TestTable(计划,投票,行动) VALUES(initiatives_no,number_of_votes,number_of_actions)WHERE TO_UPPER(TestTable.Name)== TO_UPPER(Name)//导入一行,其中csv-name列等于TestTable-name列
我现在已经坚持这个问题一段时间了,我绝对可以使用一些帮助:) 感谢
答案 0 :(得分:0)
所以你需要更新而不是插入测试表吗?使用导入csv的临时表。然后在两个表之间执行更新连接。这对于临时解决方案来说是可以的。如果需要将其合并到项目中,则将文件读取到内存并迭代每一行并为每一行执行更新连接。如果有帮助,请告诉我
答案 1 :(得分:0)
尝试使用BULK INSERT,这比其他任何东西都快:
BULK INSERT
'YOUR_TABLE'
FROM
'C:\ALL_THE_DATA.txt'
WITH (
FIELDTERMINATOR= '\t',
ROWTERMINATOR = '\n'
);
当列的顺序不同时,您需要执行某些操作,请检查this。