C# 有人知道如何从数组中带有逗号分隔列的字符串数组大容量插入SQL吗
我在C3中有一个字符串数组,其中填充了Yahoo历史数据,数组中的数据如下C# 有人知道如何从数组中带有逗号分隔列的字符串数组大容量插入SQL吗,c#,C#,我在C3中有一个字符串数组,其中填充了Yahoo历史数据,数组中的数据如下 string url = string.Format("http://ichart.yahoo.com/table.csv?s={0}&a=2&b=1&c=2010&d={1}&e={2}&f={3}&g=&ignore=.csv", SymbolSelect, CurrentMonth, Today, CurrentYear); WebClien
string url = string.Format("http://ichart.yahoo.com/table.csv?s={0}&a=2&b=1&c=2010&d={1}&e={2}&f={3}&g=&ignore=.csv",
SymbolSelect, CurrentMonth, Today, CurrentYear);
WebClient web = new WebClient();
string data = web.DownloadString(url);
string[] rows = data.Split("\n".ToCharArray());
数组行--->>日期、打开、关闭、关闭、音量、关闭
数组行将具有如上所述的每行,每行有6列数据。我不知道如何将其插入sql表中?我知道如何插入到sql表中,但从这个数组结构中不知道如何插入到sql表中。有人知道如何用这种结构插入每一行数千个字符吗
提前谢谢 根据您的SQL server技术,这可能适用于: SQL特性(自SQL-92以来)是使用行值构造函数在单个SQL语句中一次插入多行: DB2、SQL Server(自版本10.0-ie.2008起)、PostgreSQL(自版本8.2起)、MySQL和H2支持此功能
- 最有效的方法是使用
这种方法的唯一问题是,您必须将数据投影到DataTable、DataRow[]等中。为了使用SqlBulkCopy,我将“大容量插入”理解为
SqlBulkCopy
。使用SqlBulkCopy
有两种方法。第一种方法是将数据预处理到数据表中。这很简单,但只适用于小型到中型数据,因为需要先将所有数据缓冲到数据表
中
第二个是创建一个IDataReader
;这是一个流式API,因此可用于仅转发的大型数据源(如海量日志文件)。我编写了一个SimpleDataReader
,您可以看到(忽略xml;关注用法),我在一些地方使用了它。它工作得很好;你所做的就是:
- 在构造函数中,告诉基构造函数列的类型
- 在
DoRead
中,尝试读取下一行(可能是文本读取器上的ReadLine
),调用SetValues
并返回true
,如果没有更多数据,则返回false
- 覆盖
DoClose
如果您想在数据被使用后清理任何内容(可能关闭文件)
实际上,您也可以实现IDataReader,这在许多情况下效率更高,因为如果您的内存中已经有其他形式的数据,则不需要在表中加载这些数据。@Josh Einstein,创建一个IDataReader来解释传入的逗号分隔列表,这一点很好。
INSERT INTO ''TABLE'' (''column-a'', [''column-b, ... ''])
VALUES (''value-1a'', [''value-1b, ...'']),
(''value-2a'', [''value-2b, ...'']),
...