我有一个从CSV导入的数据表,如下所示:
FirstTimeTaken LatestTimeTaken Market Outcome Odds NumberOfBets VolumeMatched InPlay
03/08/2013 15:30:14 03/08/2013 15:32:28 Over/Under 3.5 Goals Over 3.5 Goals 5 10 118 1
03/08/2013 14:26:40 03/08/2013 14:29:43 Correct Score 0 - 0 7 12 279 1
03/08/2013 15:15:34 03/08/2013 15:27:39 Match Odds Barnsley 110 7 9 1
28/07/2013 16:57:26 29/07/2013 21:35:55 Match Odds Barnsley 3 9 35 0
Run Code Online (Sandbox Code Playgroud)
我不得不以varchar格式导入前两列,因为我在尝试导入为datetime时遇到错误.现在我有一个表中的数据,我需要将列格式从Varchar转换为Datetime.我试过了:
ALTER TABLE #CSVTest_Data
ALTER COLUMN FirstTimeTaken DATETIME
ALTER TABLE #CSVTest_Data
ALTER COLUMN LatestTimeTaken DATETIME
Run Code Online (Sandbox Code Playgroud)
这会导致错误:'将varchar数据类型转换为日期时间数据类型会导致超出范围的值'.我知道删除最后一行数据可以解决问题,所以我怀疑系统认为日期格式是MM/DD/YYYY,而实际上是DD/MM/YYYY.以下查询工作正常:
SELECT convert(VARCHAR(50),FirstTimeTaken,105) from #CSVTest_Data
SELECT convert(VARCHAR(50),LatestTimeTaken,105) …Run Code Online (Sandbox Code Playgroud) 我有一个定义文件路径的字符串:
string duplicateFilePath = D:\User\Documents\processed\duplicate_files\file1.jpg;
Run Code Online (Sandbox Code Playgroud)
我要将一个文件移动到这个位置,但有时候一个名字相同的文件都准备好了.在这种情况下,我想区分文件名.我有每个文件的crc值,所以我认为可能很好用于确保单个文件名.我可以创建:
string duplicateFilePathWithCrc = duplicateFilePath + "(" + crcValue + ")";
Run Code Online (Sandbox Code Playgroud)
但这给了:
D:\User\Documents\processed\duplicate_files\file1.jpg(crcvalue);
Run Code Online (Sandbox Code Playgroud)
我需要:
D:\User\Documents\processed\duplicate_files\file1(crcvalue).jpg;
Run Code Online (Sandbox Code Playgroud)
如何在文件扩展名之前将crcvalue放入字符串中,请记住文件路径中可能还有其他.文件扩展名有所不同?
我是第一次成立背景工作者.它主要是在代码运行时工作,我的停止/取消按钮正在工作.但是,我也在尝试报告更新进度条的进度,但我根本无法解决这个问题.
我从点击按钮启动代码,运行此代码:
backgroundWorker1.WorkerSupportsCancellation = true;
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1.RunWorkerAsync();//this invokes the DoWork event
Run Code Online (Sandbox Code Playgroud)
我的Do_Work方法:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
int j = 0;// Count cumulative imported files
int countDupFiles = 0;// Count number of previously imported csv files
int countImportedFiles = 0;// Count imported files
foreach (string folderPath in csvDirList)
{
string[] csvFileNames = Directory.GetFiles(@folderPath, "*.csv");
frmImportCsvData.replaceAll(csvFileNames, folderPath + "\\", "");
for (int i = 0; i < csvFileNames.Length; i++, j++)
{ …Run Code Online (Sandbox Code Playgroud) 我是 C++ 新手,被要求将 Java 程序转换为 C++。我正在尝试编写一种方法来检查 unordered_set 中的所有元素是否存在于另一个 unordered_set 中。我发现下面的示例使用 hash_set,但 hash_set 已弃用,建议现在使用 unordered_set。
// returns true if one contains all elements in two
bool SpecSet::containsAll(hash_set<Species*> one, hash_set<Species*> two) {
sort(one.begin(), one.end());
sort(two.begin(), two.end());
return includes(one.begin(), one.end(), two.begin(), two.end());
}
Run Code Online (Sandbox Code Playgroud)
所以我需要一种使用 unordered_set 来做到这一点的方法。排序不适用于无序集,并且查找速度很重要,因此我不想使用有序集。
bool SpecSet::containsAll(unordered_set<Species*> one, unordered_set<Species*> two) {
return ?;
}
Run Code Online (Sandbox Code Playgroud)
我真的很感谢您提供一些帮助来有效地做到这一点。
编辑:我想这会起作用。看来除了一分为二循环之外,没有更有效的方法了。
bool SpecSet::containsAll(unordered_set<Species*> one, unordered_set<Species*> two) {
if(two.size() > one.size())
{
return false;
}
for(Species *species : two)
{
if(one.find(species) == one.end())
{
return false;
}
} …Run Code Online (Sandbox Code Playgroud) 我正在开发一个项目,我希望能够将命令发送到SQL Server并运行查询.我已成功使用Joel的非常好的教程将查询返回到列表框: 创建数据库查询METHOD
我现在正在尝试调整它来执行一些命令,然后运行查询以检查命令是否有效.我的查询失败,因为我认为这些命令不起作用.
目前我发送这个:
MySqlCommand("CREATE TABLE #CSVTest_Data" +
"(FirstTimeTaken DATETIME," +
"LatestTimeTaken DATETIME," +
"Market VARCHAR(50)," +
"Outcome VARCHAR(50),"+
"Odds DECIMAL(18,2)," +
"NumberOfBets INT," +
"VolumeMatched DECIMAL(18,2),"+
"InPlay TINYINT)");
Run Code Online (Sandbox Code Playgroud)
进入:
private void MySqlCommand(string sql)
{
int numberOfRecords;
//string result;
using (var connection = GetConnection())
using (var command = new SqlCommand(sql, connection))
{
connection.Open();
numberOfRecords = command.ExecuteNonQuery();
}
MessageBox.Show(numberOfRecords.ToString());
}
Run Code Online (Sandbox Code Playgroud)
我的理解是ExecuteNonQuery返回受影响的行数的整数.我的消息框显示值-1.在SQL Server中运行相同的命令将返回"命令已成功完成".如果有人能告诉我我的MySqlCommand方法是否正常以及如何通过运行该函数返回输出的SQL Server消息,我将不胜感激.
我正在研究一个读取2个csv文件的项目:
var myFullCsv = ReadFile(myFullCsvFilePath);
var masterCsv = ReadFile(csvFilePath);
Run Code Online (Sandbox Code Playgroud)
然后创建一个新的var,其中包含myFullCsv中存在的额外行,但不包含主Csv.代码很棒,因为它简单:
var extraFilesCsv = myFullCsv.Except(masterCsv);
Run Code Online (Sandbox Code Playgroud)
读入的csv文件包含如下数据:
c01.jpg,95182,24f77a1e,\Folder1\FolderA\,
c02.jpg,131088,c17b1f13,\Folder1\FolderA\,
c03.jpg,129485,ddc964ec,\Folder1\FolderA\,
c04.jpg,100999,930ee633,\Folder1\FolderA\,
c05.jpg,101638,b89f1f28,\Folder1\FolderA\,
Run Code Online (Sandbox Code Playgroud)
但是,我刚刚发现每个文件中某些字符不匹配的情况.例如(JPG in caps):
c01.JPG,95182,24f77a1e,\Folder1\FolderA\,
Run Code Online (Sandbox Code Playgroud)
如果数据是这样的,那么它不包含在extraFilesCsv中,但我需要它.任何人都可以告诉我如何使这段代码对文本的情况不敏感?
编辑:对不起,我忘了ReadFile不是标准命令.这是代码:
public static IEnumerable<string> ReadFile(string path)
{
string line;
using (var reader = File.OpenText(path))
while ((line = reader.ReadLine()) != null)
yield return line;
}
Run Code Online (Sandbox Code Playgroud)