应用以下sql脚本:
LOAD DATA LOCAL INFILE 'C:/Program Files/MySQL/MySQL Server 5.7/data/nad_content.csv'
INTO TABLE nad_content
FIELDS TERMINATED BY ',' #分隔符
OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"'
LINES TERMINATED BY '\n' #换行
IGNORE 1 LINES
向数据库中导入记录,但是总是执行成功,0行受影响,
求大神指导
拿去玩
static void Main(string[] args)
{
int count = 0;
string readerPath=@"C:\Users\Administrator\Desktop\readerDemo.csv";
string writerPath=@"C:\Users\Administrator\Desktop\writeDemo.csv";
if (File.Exists(writerPath))
{
File.Delete(writerPath);
}
using (StreamReader reader = new StreamReader(readerPath,Encoding.UTF8))
{
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
using (StreamWriter writer = new StreamWriter(writerPath, true,Encoding.Default))
{
writer.WriteLine(line);
}
count++;
Console.WriteLine("正在转码第{0}行,请稍等",count);
}
}
Console.WriteLine("转码完成,共转码{0}条数据",count);
Console.WriteLine("开始导入数据,请稍等");
//开始向数据库导入数据
string sql = "BULK INSERT Test.dbo.BagDataTable FROM 'C:\\Users\\Administrator\\Desktop\\writeDemo.csv' WITH(FIELDTERMINATOR=',',BATCHSIZE=100000,FIRSTROW=2)";
try
{
DbHelper.ExecuteSql(sql);//使用的是方法ExecuteNonQuery()方法,具体的Helper就不上传了。
}
catch(Exception ex)
{
using (StreamWriter writerLog = new StreamWriter(@"C:\Users\Administrator\Desktop\Log.txt"))
{
writerLog.WriteLine(ex.ToString());
}
}
Console.WriteLine("数据导入完毕");
Console.ReadKey();
}
}
问题已解决,是编码的问题,他实际是不可导入中文,所以编码应设置为GB2312...不可以是utf8
修改后的脚本为:
LOAD DATA LOCAL INFILE 'C:/Program Files/MySQL/MySQL Server 5.7/data/nad_content.csv'
INTO TABLE nad_content character set GB2312
FIELDS TERMINATED BY ',' #分隔符
OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"'
LINES TERMINATED BY '\n' #换行
IGNORE 1 LINES
你要是想把数据库里面导出的再导进去,导出的时候直接指定一个文中没有的东西作为分隔符,比如@啥的,这样就不会受到干扰了,能直接导回去,csv查看的时候把分隔符换成现在的分隔符就好。
你可以试一试。