Lea*_*mer 5 c# sql sql-server-2008
我正在开发一个宠物项目,该项目允许我将我的游戏收藏存储在数据库中并在这些游戏上写笔记。游戏的单个条目已通过将所需变量插入到我的game_information表中并输出该表中新创建的行的 PK(身份)来进行编码,因此我可以将其与注释一起插入到我的 game_notes 表中。
var id = db.QueryValue("INSERT INTO Game_Information (gamePrice, name, edition) output Inserted.gameId VALUES (@0, @1, @2)", gamePrice, name, edition);
db.Execute("INSERT INTO Game_Notes(gameId, notes, noteDate) VALUES (@0, @1, @2)", id, notes, noteDate);
Run Code Online (Sandbox Code Playgroud)
我现在正在通过 csv 批量上传数据,但是如何编写一个BULK INSERT输出新创建行的所有 PK 的文件,以便我可以将它们game_notes与一个名为注释的变量一起插入到我的第二个表 ( ) 中?
目前我有以下内容:
读取.csv并使用BULK INSERT将信息转储到 game_information 视图中的存储过程
@FileName nvarchar(200)
AS
BEGIN
DECLARE @sql nvarchar(MAX);
SET @sql = 'BULK INSERT myview
FROM ''mycsv.csv''
WITH
(
FIELDTERMINATOR = '','',
ROWTERMINATOR = ''\n'',
FIRSTROW = 2
)'
EXEC(@sql)
END
Run Code Online (Sandbox Code Playgroud)在 WebMatrix 中创建设置的 C# 代码
if ((IsPost) && (Request.Files[0].FileName!=" "))
{
var fileSavePath = "";
var uploadedFile = Request.Files[0];
fileName = Path.GetFileName(uploadedFile.FileName);
uploadedFile.SaveAs(//path +filename);
var command = "EXEC Procedure1 @FileName = @0";
db.Execute(command, //path +filename);
File.Delete(//path +filename);
}
Run Code Online (Sandbox Code Playgroud)
这允许将 csv 记录插入到game_information.
如果这对于 不可行BULK INSERT,那么是否可以尝试尝试有效的解决方案?
BULK INSERT into a temp_table
INSERT from temp_table to my game_information table
OUTPUT the game_Ids from the INSERT as an array(?)
then INSERT the Ids along with note into game_notes.
Run Code Online (Sandbox Code Playgroud)
我也一直在考虑OPENROWSET,但我不确定这是否能够实现我想要实现的目标。非常感谢对此的反馈。
您有几种不同的选择。
批量插入临时表,然后将信息复制到永久表中绝对是一个有效的解决方案。但是,根据您想要执行的操作,我认为不需要临时表。只需批量导入 game_information,选择您的 ID 到您的应用程序,然后更新 game_notes 即可。
另一种选择是插入钥匙。您可以允许对表启用 IDENTITY_INSERT,并将密钥作为 CSV 文件的一部分。请参阅此处: https: //msdn.microsoft.com/en-ca/library/ms188059.aspx ?f=255&MSPPError=-2147217396 。如果您这样做了,那么您可以对 Game_information 表执行一次 BULK INSERT,然后使用不同的 CSV 文件对辅助表执行第二次 BULK INSERT。请务必在完成后重新启用键约束并关闭 IDENTITY_INSERT。
如果您需要对从 CSV 文件中选择的数据进行更具体的控制,那么您可以使用 OPENROWSET,但您的帖子中没有足够的详细信息来进一步评论。
| 归档时间: |
|
| 查看次数: |
3401 次 |
| 最近记录: |