我正在寻找帮助将.csv文件导入SQL Server使用BULK INSERT,我几乎没有基本问题.
问题:
CSV文件数据之间可能有,(逗号)(例如:描述),那么如何进行导入处理这些数据呢?
如果客户端从Excel创建CSV,那么带有逗号的数据将包含在""(双引号)[如下例]中,那么导入如何处理呢?
我们如何跟踪某些行是否包含导致跳过的错误数据?(导入是否会跳过不可导入的行)
以下是带标题的示例CSV:
Name,Class,Subject,ExamDate,Mark,Description
Prabhat,4,Math,2/10/2013,25,Test data for prabhat.
Murari,5,Science,2/11/2013,24,"Test data for his's test, where we can test 2nd ROW, Test."
sanjay,4,Science,,25,Test Only.
Run Code Online (Sandbox Code Playgroud)
和要导入的SQL语句:
BULK INSERT SchoolsTemp
FROM 'C:\CSVData\Schools.csv'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ',', --CSV field delimiter
ROWTERMINATOR = '\n', --Use to shift the control to next row
TABLOCK
)
Run Code Online (Sandbox Code Playgroud) 为了在数据库中插入大量数据,我曾经将所有插入信息收集到列表中并将此列表转换为a DataTable.然后我通过将该列表插入数据库SqlBulkCopy.
我发送生成的列表LiMyList
,其中包含我要插入数据库的所有批量数据的信息,并将其
传递给我的批量插入操作
InsertData(LiMyList, "MyTable");
Run Code Online (Sandbox Code Playgroud)
哪里InsertData是
public static void InsertData<T>(List<T> list,string TableName)
{
DataTable dt = new DataTable("MyTable");
clsBulkOperation blk = new clsBulkOperation();
dt = ConvertToDataTable(list);
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
using (SqlBulkCopy bulkcopy = new SqlBulkCopy(ConfigurationManager.ConnectionStrings["SchoolSoulDataEntitiesForReport"].ConnectionString))
{
bulkcopy.BulkCopyTimeout = 660;
bulkcopy.DestinationTableName = TableName;
bulkcopy.WriteToServer(dt);
}
}
public static DataTable ConvertToDataTable<T>(IList<T> data)
{
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));
DataTable table = new DataTable();
foreach (PropertyDescriptor prop in properties)
table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
foreach (T item in data) …Run Code Online (Sandbox Code Playgroud) 我目前正在写一个音乐博客.管理员每2-3天发布一篇新文章.管理员发布文章后,将立即向大约5000个订阅者发送大量电子邮件.
实施群发邮件功能的最佳方法是什么?
以下功能是否有效?
function massmail()
{
$content = '...';
foreach ($recipients as $r) {
$_content = $content . '<img src="http://xxx/trackOpenRate.php?id='.$r.'">';
mail($r, 'subject', $_content);
}
}
Run Code Online (Sandbox Code Playgroud)
另一个问题:如果所有5000个订阅者都使用Yahoo Mail,雅虎会将其视为DDOS攻击并阻止我的SMTP服务器的IP地址吗?
我有一个大约30000行数据的文件,我想加载到sqlite3数据库.有没有比为每行数据生成插入语句更快的方法?
数据以空格分隔,并直接映射到sqlite3表.是否有任何类型的批量插入方法用于向数据库添加卷数据?
如果它没有内置,有没有人设计出一些狡猾的好方法呢?
我应该先问一下,有没有一种C++方法可以从API中做到这一点?
是否有任何方法可以批量执行INSERT OR UPDATEMySQL服务器上的查询?
INSERT IGNORE ...
Run Code Online (Sandbox Code Playgroud)
将无法工作,因为如果该字段已经存在,它将简单地忽略它而不插入任何内容.
REPLACE ...
Run Code Online (Sandbox Code Playgroud)
将不起作用,因为如果该字段已经存在,它将首先DELETE它然后INSERT再次,而不是更新它.
INSERT ... ON DUPLICATE KEY UPDATE
Run Code Online (Sandbox Code Playgroud)
会有效,但不能批量使用.
所以我想知道是否有任何类似的命令INSERT ... ON DUPLICATE KEY UPDATE可以批量发布(同时多行).
如何批量更新mysql数据?如何定义这样的东西:
UPDATE `table`
WHERE `column1` = somevalues
SET `column2` = othervalues
Run Code Online (Sandbox Code Playgroud)
与某些值如下:
VALUES
('160009'),
('160010'),
('160011');
Run Code Online (Sandbox Code Playgroud)
和其他值:
VALUES
('val1'),
('val2'),
('val3');
Run Code Online (Sandbox Code Playgroud)
也许用mysql不可能?一个PHP脚本?
我正在尝试批量插入一个非常大的数据集的MySQL数据库,并且喜欢使用django bulk_create而忽略重复的错误.
样品型号:
class MyModel(models.Model):
my_id=models.IntegerField(primary_key=True)
start_time = models.DateTimeField()
duration = models.IntegerField()
......
description = models.CharField(max_length=250)
Run Code Online (Sandbox Code Playgroud)
到目前为止,我有以下代码(所有模型的通用,我传入Model_instance()和[bulk_create对象列表]):
def insert_many(model, my_objects):
# list of ids where pk is unique
in_db_ids = model.__class__.objects.values_list(model.__class__._meta.pk.name)
if not in_db_ids:
# nothing exists, save time and bulk_create
model.__class__.objects.bulk_create(my_objects)
else:
in_db_ids_list = [elem[0] for elem in in_db_ids]
to_insert=[]
for elem in my_objects:
if not elem.pk in in_db_ids_list:
to_insert.append(elem)
if to_insert:
model.__class__.objects.bulk_create(to_insert)
Run Code Online (Sandbox Code Playgroud)
django有没有办法做到这一点,以避免重复?模仿MySQL insert ignore会很棒.如果我只是使用bulk_create(非常快),如果主键重复并且插入停止,我会收到错误.
我尝试使用大小为1.4 GB的.csv文件中的大量数据加载我的数据库.但是当我尝试运行我的代码时,我会遇到错误.
这是我的代码:
USE [Intradata NYSE]
GO
CREATE TABLE CSVTest1
(Ticker varchar(10) NULL,
dateval date NULL,
timevale time(0) NULL,
Openval varchar(10) NULL,
Highval varchar(10) NULL,
Lowval varchar(10) NULL,
Closeval varchar(10) NULL,
Volume varchar(10) NULL
)
GO
BULK
INSERT CSVTest1
FROM 'c:\intramerge.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
--Check the content of the table.
SELECT *
FROM CSVTest1
GO
--Drop the table to clean up database.
DROP TABLE CSVTest1
GO
Run Code Online (Sandbox Code Playgroud)
我尝试建立一个包含大量库存报价的数据库.但我收到此错误消息:
消息4832,级别16,状态1,行2批量加载:在数据文件中遇到意外的文件结尾.消息7399,级别16,状态1,行2链接服务器"(null)"的OLE DB提供程序"BULK"报告错误.提供商未提供有关错误的任何信息.消息7330,级别16,状态2,行2无法从OLE DB提供程序"BULK"获取链接服务器"(null)"的行
我不太了解SQL,但我希望能抓到一两件事.希望有人看到可能非常明显的东西.
我有两个型号如下:
class Book(models.Model):
title = models.CharField(max_length=100)
year = models.IntegerField(max_lenght=4)
author = models.ManyToManyField(null=true, blank=true)
class Author(models.CustomUser):
# some fields
Run Code Online (Sandbox Code Playgroud)
现在,我要做的是添加一个Author多个Book对象而不迭代书对象列表.
Django的更新方法不支持ManyToManyField按文档.它说
您只能使用此方法设置非关系字段和ForeignKey字段.要更新非关系字段,请将新值作为常量提供.要更新ForeignKey字段,请将新值设置为要指向的新模型实例.
所以目前我正在做以下事情,这是非常低效的,因为我将为每个图书对象访问数据库.
author = Author.objects.get(pk=1)
books = Book.objects.filter(**kwargs) # say this returns 100 objects
# each loop here will hit the database making it really inefficient
# for long lists.
for book in books:
book.authors.add(author)
book.save()
Run Code Online (Sandbox Code Playgroud)
我很确定有一种解决方法,但我无法在文档中找到它.任何帮助,将不胜感激.谢谢
我正在重写Django的模型删除方法,以便删除磁盘中用于图像字段的孤立文件,如下所示:
class Image(models.Model):
img = models.ImageField(upload_to=get_image_path)
...
def delete(self, *args, **kwargs):
self.img.delete()
super(Image, self).delete(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
当我从管理员中删除单个对象时这很好用,但是当我选择多个对象并删除它们时,似乎没有被调用.我已经谷歌搜索了一段时间,但没有找到正确的关键字来得到答案,也没有官方文档似乎谈论这个主题.
bulk ×10
django ×3
mysql ×3
bulkinsert ×2
csv ×2
sql ×2
sql-server ×2
.net ×1
c# ×1
c++ ×1
database ×1
email ×1
imagefield ×1
insert ×1
many-to-many ×1
massmail ×1
model ×1
php ×1
python ×1
sql-update ×1
sqlite ×1