c# – 将“SQL”导出到T-SQL

c# – 将“SQL”导出到T-SQL,第1张

概述我有一个第三方应用程序,将数据库导出为“SQL格式”,这是相当明确的,但它似乎没有完全使用T-SQL.当我导出它时产生这样的东西 INSERT INTO [ExampleDB] ( [IntField] , [DateTimeField] , [VarcharField], [BinaryField])VALUES(1 , '2012/04/02 12:25:00:01' , 'Some Te 我有一个第三方应用程序,将数据库导出为“sql格式”,这是相当明确的,但它似乎没有完全使用T-sql.当我导出它时产生这样的东西

INSERT INTO [ExampleDB] ( [IntFIEld],[DateTimeFIEld],[VarcharFIEld],[BinaryFIEld])VALUES(1,'2012/04/02 12:25:00:01','Some Text',X'123456'),(2,'0000/00/00 00:00:00:00','B',NulL),--(SNIP,it does this for 1000 records)(999,'Other Text',null);(1000,'D',null);INSERT INTO [ExampleDB] ( [IntFIEld],BinaryFIEld)VALUES(1001,'Trying to break my parser with the next line',null),(1002,' ''X''123',X'deadbeef'),(1003,'DID it break it?',(1004,'What about this? ''0000/00/00 00:00:00:00'' Will that?',--(SNIP)

我遇到的两个障碍是:

>’0000/00/00 00:00:00:00’的日期值
>它们将二进制输出存储为前缀为X的字符串

我想我可以做一个Regex.Replace,但我想知道是否有更简单的解决方案.到目前为止我要导入的代码是

using (var cmd = new sqlCommand("",conn)){    //snip    cmd.CommandTimeout = 0; //Wait forever,bad bad bad,but what else can I do?    using (var txtRdr = new StreamReader(file))    {        string query = txtRdr.ReadToEnd();        query = query.Replace(" '0000/00/00 00:00:00:00' "," NulL ");        query = Regex.Replace(query,"X'([0-9a-fA-F]+)'",@"0x");        cmd.CommandText = query;        cmd.ExecuteNonquery();    }}

因为他们列出值的方式,我知道我与sql2008或更新版本绑定,但是我编写的代码是否有任何问题可以让sql2008解析它?

当我运行它时,它会陷入执行查询的困境. sql文件大小为8000 KB(但我可以调整它)有什么办法可以加快速度吗?也许做一些更多的格式化并将其转换为批量插入?

解决方法 每当我不得不在两个数据库之间传输数据时,我发现最快的方式似乎如下:

>使用卸载或等效功能将源数据库批量导出到文本文件.>编写将文本文件格式从源格式转换为目标格式的软件.>使用批量导入或类似功能将文本文件加载到目标数据库中.

总结

以上是内存溢出为你收集整理的c# – 将“SQL”导出到T-SQL全部内容,希望文章能够帮你解决c# – 将“SQL”导出到T-SQL所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1234482.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存