精华内容
下载资源
问答
  • CSV导入SQL

    2013-08-22 11:27:57
    dlg.Filter = "Csv文件(*.csv)|*.csv|所有文件|*.*"; dlg.Multiselect = true; if (dlg.ShowDialog() == DialogResult.OK) { string[] FileNames = dlg.FileNames; foreach (string FileName in ...
  • 大数据量csv导入sql数据库 如题,百万级数据量csv入库 思路 读取csv文件转成DataTable,分批次步长1W批量入库,其中csv单元格内逗号做特殊处理防止串列 实现 using Dapper; using System; using System.Collections....

    大数据量csv导入sql数据库

    如题,百万级数据量csv入库

    思路
    读取csv文件转成DataTable,分批次步长1W批量入库,其中csv单元格内逗号做特殊处理防止串列

    实现

    using Dapper;
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.SqlClient;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace CSVToSql
    {
        class Program
        {
            static void Main(string[] args)
            {
                IDbConnection connection = ConnectionFactory.ASConnection;
    
    
                int count = 0;
                string readerPath = @"C:\Users\kbjh372\Desktop\CRM数据表结构\medical_examples\test\PROFESSION_20210604131046_001.csv";
                string writerPath = @"C:\Users\kbjh372\Desktop\CRM数据表结构\medical_examples\test\PROFESSION_20210604131046_write.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 dbo.CRM_PROFESSION FROM 'C:\\Users\\kbjh372\\Desktop\\CRM数据表结构\\medical_examples\\test\\PROFESSION_20210604131046_write.csv' WITH(FIELDTERMINATOR=',',BATCHSIZE=100000,FIRSTROW=2)";
                try
                {
                    //DbHelper.ExecuteSql(sql);//使用的是方法ExecuteNonQuery()方法,具体的Helper就不上传了。
    
                    connection.Execute(sql);
                }
                catch (Exception ex)
                {
                    using (StreamWriter writerLog = new StreamWriter(@"C:\Users\kbjh372\Desktop\CRM数据表结构\medical_examples\test\Log\Log.txt"))
                    {
                        writerLog.WriteLine(ex.ToString());
                    }
                }
                */
    
                var dt = CSVFileHelper.OpenCSV(writerPath);
    
                List<DataTable> dts = CSVFileHelper.SplitDataTable(dt, 10000);
    
    
                //声明一个事务对象
                SqlTransaction tran = null;//声明一个事务对象  
                try
                {
                    using (SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=..;database=..;"))
    
                    {
                        conn.Open();//打开链接  
    
    
                        for (int i = 0; i < dts.Count; i++)
                        {
                            using (tran = conn.BeginTransaction())
                            {
                                using (SqlBulkCopy copy = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, tran))
                                {
                                    copy.DestinationTableName = "CRM_PROFESSION";  //指定服务器上目标表的名称  
                                    copy.WriteToServer(dts[i]);                      //执行把DataTable中的数据写入DB  
                                    tran.Commit();                                      //提交事务  
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    if (null != tran)
                        tran.Rollback();
                    //LogHelper.Add(ex);  
                }
                
                /*
    
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    var CODE = dt.Rows[i]["CODE"];
                    var NAME = dt.Rows[i]["NAME"];
                    var TYPE = dt.Rows[i]["TYPE"];
                    var GENDER = dt.Rows[i]["GENDER"];
                    var MOBILE = dt.Rows[i]["MOBILE"];
                    var EMAIL = dt.Rows[i]["EMAIL"];
                    var INSTITUTION_CODE = dt.Rows[i]["INSTITUTION_CODE"];
                    var INSTITUTION_NAME = dt.Rows[i]["INSTITUTION_NAME"];
                    var DEPARTMENT_CODE = dt.Rows[i]["DEPARTMENT_CODE"];
                    var DEPARTMENT_NAME = dt.Rows[i]["DEPARTMENT_NAME"];
                    var TITLE_CODE = dt.Rows[i]["TITLE_CODE"];
                    var TITLE_NAME = dt.Rows[i]["TITLE_NAME"];
                    var POSITION_CODE = dt.Rows[i]["POSITION_CODE"];
                    var POSITION_NAME = dt.Rows[i]["POSITION_NAME"];
                    var QUALIFICATION = dt.Rows[i]["QUALIFICATION"];
                    var MODIFIED_DATE = dt.Rows[i]["MODIFIED_DATE"];
                    string sql = @"insert into [CRM_PROFESSION] values (@CODE,@NAME,@TYPE,@GENDER,@MOBILE,@EMAIL,@INSTITUTION_CODE,
                                                                        @INSTITUTION_NAME,@DEPARTMENT_CODE,@DEPARTMENT_NAME,@TITLE_CODE,
                                                                        @TITLE_NAME,@POSITION_CODE,@POSITION_NAME,@QUALIFICATION,@MODIFIED_DATE)";
    
                    connection.Execute(sql, new
                    {
                        CODE = CODE.ToString().Trim('"'),
                        NAME = NAME.ToString().Trim('"'),
                        TYPE = TYPE.ToString().Trim('"'),
                        GENDER = GENDER.ToString().Trim('"'),
                        MOBILE = MOBILE.ToString().Trim('"'),
                        EMAIL = EMAIL.ToString().Trim('"'),
                        INSTITUTION_CODE = INSTITUTION_CODE.ToString().Trim('"'),
                        INSTITUTION_NAME = INSTITUTION_NAME.ToString().Trim('"'),
                        DEPARTMENT_CODE = DEPARTMENT_CODE.ToString().Trim('"'),
                        DEPARTMENT_NAME = DEPARTMENT_NAME.ToString().Trim('"'),
                        TITLE_CODE = TITLE_CODE.ToString().Trim('"'),
                        TITLE_NAME = TITLE_NAME.ToString().Trim('"'),
                        POSITION_CODE = POSITION_CODE.ToString().Trim('"'),
                        POSITION_NAME = POSITION_NAME.ToString().Trim('"'),
                        QUALIFICATION = QUALIFICATION.ToString().Trim('"'),
                        MODIFIED_DATE = Convert.ToDateTime(MODIFIED_DATE.ToString().Trim('"')),
                    });
    
    
                }
    
                */
    
                Console.WriteLine("数据导入完毕");
                Console.ReadKey();
            }
        }
    }
    
    

    工具类

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace CSVToSql
    {
        public class CSVFileHelper
        {
            /// <summary>
            /// 将CSV文件的数据读取到DataTable中
            /// </summary>
            /// <param name="fileName">CSV文件路径</param>
            /// <returns>返回读取了CSV数据的DataTable</returns>
            public static DataTable OpenCSV(string filePath)
            {
                Encoding encoding = GetType(filePath); //Encoding.ASCII;//
                DataTable dt = new DataTable();
    
                //加一个ID列名
                DataColumn dc0 = new DataColumn("ID");
                dt.Columns.Add(dc0);
    
                FileStream fs = new FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read);
    
                //StreamReader sr = new StreamReader(fs, Encoding.UTF8);
                StreamReader sr = new StreamReader(fs, encoding);
                //string fileContent = sr.ReadToEnd();
                //encoding = sr.CurrentEncoding;
                //记录每次读取的一行记录
                string strLine = "";
                //记录每行记录中的各字段内容
                string[] aryLine = null;
                string[] tableHead = null;
                //标示列数
                int columnCount = 0;
                //标示是否是读取的第一行
                bool IsFirst = true;
                //逐行读取CSV中的数据
                while ((strLine = sr.ReadLine()) != null)
                {
                    //strLine = Common.ConvertStringUTF8(strLine, encoding);
                    //strLine = Common.ConvertStringUTF8(strLine);
    
                    if (IsFirst == true)
                    {
                        
                        tableHead = strLine.Split(',');
                        IsFirst = false;
                        columnCount = tableHead.Length;
                        //创建列
                        for (int i = 0; i < columnCount; i++)
                        {
                            DataColumn dc = new DataColumn(tableHead[i]);
                            dt.Columns.Add(dc);
                        }
                    }
                    else
                    {
                        //aryLine = strLine.Split(',');
                        aryLine = CSVstrToArry(strLine);
                        DataRow dr = dt.NewRow();
                        for (int j = 0; j < columnCount; j++)
                        {
                            //dr[j] = aryLine[j];
                            dr[j + 1] = aryLine[j].Trim('"');     //串一列ID出来
                        }
                        dt.Rows.Add(dr);
                    }
                }
                if (aryLine != null && aryLine.Length > 0)
                {
                    dt.DefaultView.Sort = tableHead[0] + " " + "asc";
                }
    
                sr.Close();
                fs.Close();
                return dt;
            }
    
            /// 给定文件的路径,读取文件的二进制数据,判断文件的编码类型
            /// <param name="FILE_NAME">文件路径</param>
            /// <returns>文件的编码类型</returns>
    
            public static System.Text.Encoding GetType(string FILE_NAME)
            {
                System.IO.FileStream fs = new System.IO.FileStream(FILE_NAME, System.IO.FileMode.Open,
                    System.IO.FileAccess.Read);
                System.Text.Encoding r = GetType(fs);
                fs.Close();
                return r;
            }
    
            /// 通过给定的文件流,判断文件的编码类型
            /// <param name="fs">文件流</param>
            /// <returns>文件的编码类型</returns>
            public static System.Text.Encoding GetType(System.IO.FileStream fs)
            {
                byte[] Unicode = new byte[] { 0xFF, 0xFE, 0x41 };
                byte[] UnicodeBIG = new byte[] { 0xFE, 0xFF, 0x00 };
                byte[] UTF8 = new byte[] { 0xEF, 0xBB, 0xBF }; //带BOM
                System.Text.Encoding reVal = System.Text.Encoding.Default;
    
                System.IO.BinaryReader r = new System.IO.BinaryReader(fs, System.Text.Encoding.Default);
                int i;
                int.TryParse(fs.Length.ToString(), out i);
                byte[] ss = r.ReadBytes(i);
                if (IsUTF8Bytes(ss) || (ss[0] == 0xEF && ss[1] == 0xBB && ss[2] == 0xBF))
                {
                    reVal = System.Text.Encoding.UTF8;
                }
                else if (ss[0] == 0xFE && ss[1] == 0xFF && ss[2] == 0x00)
                {
                    reVal = System.Text.Encoding.BigEndianUnicode;
                }
                else if (ss[0] == 0xFF && ss[1] == 0xFE && ss[2] == 0x41)
                {
                    reVal = System.Text.Encoding.Unicode;
                }
                r.Close();
                return reVal;
            }
    
            /// 判断是否是不带 BOM 的 UTF8 格式
            /// <param name="data"></param>
            /// <returns></returns>
            private static bool IsUTF8Bytes(byte[] data)
            {
                int charByteCounter = 1;  //计算当前正分析的字符应还有的字节数
                byte curByte; //当前分析的字节.
                for (int i = 0; i < data.Length; i++)
                {
                    curByte = data[i];
                    if (charByteCounter == 1)
                    {
                        if (curByte >= 0x80)
                        {
                            //判断当前
                            while (((curByte <<= 1) & 0x80) != 0)
                            {
                                charByteCounter++;
                            }
                            //标记位首位若为非0 则至少以2个1开始 如:110XXXXX...........1111110X 
                            if (charByteCounter == 1 || charByteCounter > 6)
                            {
                                return false;
                            }
                        }
                    }
                    else
                    {
                        //若是UTF-8 此时第一位必须为1
                        if ((curByte & 0xC0) != 0x80)
                        {
                            return false;
                        }
                        charByteCounter--;
                    }
                }
                if (charByteCounter > 1)
                {
                    throw new Exception("非预期的byte格式");
                }
                return true;
            }
    
    
            /// <summary>
            /// 分解数据表
            /// </summary>
            /// <param name="originalTab">需要分解的表</param>
            /// <param name="rowsNum">每个表包含的数据量</param>
            /// <returns></returns>
            public static List<DataTable> SplitDataTable(DataTable originalTab, int rowsNum)
            {
                //获取所需创建的表数量
                int tableNum = originalTab.Rows.Count / rowsNum;
                //获取数据余数
                int remainder = originalTab.Rows.Count % rowsNum;
                List<DataTable> ds = new List<DataTable>();
                //如果只需要创建1个表,直接将原始表存入DataSet
                if (tableNum == 0)
                {
                    ds.Add(originalTab);
                }
                else
                {
                    DataTable[] tableSlice = new DataTable[tableNum];
                    for (int c = 0; c < tableNum; c++)
                    {
                        tableSlice[c] = new DataTable();
                        foreach (DataColumn dc in originalTab.Columns)
                        {
                            tableSlice[c].Columns.Add(dc.ColumnName, dc.DataType);
                        }
                    }
                    for (int i = 0; i < tableNum; i++)
                    {
                        if (i != tableNum - 1)
                        {
    
                            for (int j = i * rowsNum; j < ((i + 1) * rowsNum); j++)
                            {
                                tableSlice[i].ImportRow(originalTab.Rows[j]);
                            }
                        }
                        else
                        {
                            for (int k = i * rowsNum; k < ((i + 1) * rowsNum + remainder); k++)
                            {
                                tableSlice[i].ImportRow(originalTab.Rows[k]);
                            }
                        }
                    }
                    foreach (DataTable dt in tableSlice)
                    {
                        ds.Add(dt);
                    }
                }
                return ds;
            }
    
            /// <summary>
            /// 跳过引号中的逗号,进行逗号分隔(字段内容中的逗号不参与分隔)
            /// </summary>
            /// <param name="strLine"></param>
            /// <returns></returns>
            public static string[] CSVstrToArry(string splitStr)
            {
                var newstr = string.Empty;
                List<string> sList = new List<string>();
    
                bool isSplice = false;
                string[] array = splitStr.Split(new char[] { ',' });
                foreach (var str in array)
                {
                    if (!string.IsNullOrEmpty(str) && str.IndexOf('"') > -1)
                    {
                        var firstchar = str.Substring(0, 1);
                        var lastchar = string.Empty;
                        if (str.Length > 0)
                        {
                            lastchar = str.Substring(str.Length - 1, 1);
                        }
                        if (firstchar.Equals("\"") && !lastchar.Equals("\""))
                        {
                            isSplice = true;
                        }
                        if (lastchar.Equals("\""))
                        {
                            if (!isSplice)
                                newstr += str;
                            else
                                newstr = newstr + "," + str;
    
                            isSplice = false;
                        }
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(newstr))
                            newstr += str;
                    }
    
                    if (isSplice)
                    {
                        //添加因拆分时丢失的逗号
                        if (string.IsNullOrEmpty(newstr))
                            newstr += str;
                        else
                            newstr = newstr + "," + str;
                    }
                    else
                    {
                        sList.Add(newstr.Replace("\"", "").Trim());//去除字符中的双引号和首尾空格
                        newstr = string.Empty;
                    }
                }
                return sList.ToArray();
            }
    
    
        }
    }
    
    

    仅供学习参考,如有侵权联系我删除

    展开全文
  • SQL挑战 设计表以保存CSV中的数据,将CSV导入SQL数据库,并回答有关数据的问题。
  • I am trying to import a CSV file into my SQL database. This is what I have:if ($_FILES[csvFile][size] > 0){$file = $_FILES[csvFile][tmp_name];$handle = fopen($file,"r");do {if ($data[0]){$insert_qu...

    I am trying to import a CSV file into my SQL database. This is what I have:

    if ($_FILES[csvFile][size] > 0)

    {

    $file = $_FILES[csvFile][tmp_name];

    $handle = fopen($file,"r");

    do {

    if ($data[0])

    {

    $insert_query = "REPLACE INTO `teacherNames` SET

    `schoolName` = '".addslashes($schoolname)."',

    `teacherName` = '".addslashes($data[0])."'

    ;";

    $result = mysql_query($insert_query);

    echo $insert_query; -- SEE RESULTING QUERY BELOW

    echo $data[0]." added\n
    ";

    }

    }

    while ($data = fgetcsv($handle,1000,",","'"));

    The CSV file has 3 records and it looks correct. The procedure works to an extent but for some reason it is not reading the CSV file correctly and the resulting query is like this:

    REPLACE INTO `teacherNames` SET `schoolName` = 'Brooks', `teacherName` = 'RMG JMC PMC';

    When I would expect to get 3 separate queries - one for each record. It does not seem to be reading the CSV file as 3 separate records but as 1. Can anyone see why?

    UPDATE:

    The CSV contents are:

    RMG

    JMC

    PMC

    展开全文
  • CSV导入sql

    2017-05-09 09:45:41
  • CSV 导入SQL Server(ssms导入方式)

    千次阅读 2019-09-27 14:03:59
    打开sqlserver managment studio,连接数据库 选中需要导入的数据库,单击...数据源选择平面文件源,在浏览中选择需要导入的文件,如果找不到文件,查看文件框右下角的文件格式,选择.csv格式(.txt肯定找不到csv...
    1. 打开sqlserver managment studio,连接数据库
      在这里插入图片描述
    2. 选中需要导入的数据库,单击右键选择任务===>导入数据
      在这里插入图片描述
    3. 数据源选择平面文件源,在浏览中选择需要导入的文件,如果找不到文件,查看文件框右下角的文件格式,选择.csv格式(.txt肯定找不到csv文件啊!!!)
      在这里插入图片描述
    4. ok,点击下一步
      在这里插入图片描述
    5. 如果已经建表直接下一步,没有建表的话,点击编辑映射
      在这里插入图片描述
    6. 下一步
      在这里插入图片描述
    7. 下一步
      在这里插入图片描述
    8. 等待导入完成
    展开全文
  • 数据迁移 通过正确的错误检查和性能测试将CSV导入SQL数据库。 先决条件 使用以下资源在资源中创建了login.properties: 用户名= x 密码= x
  • csv导入sqlsever脚本

    2016-03-19 16:42:48
    use icbc_data_db ...--sqlcmd -S localhost -U sa -P 123 -i transdata_BatchImport_folder.sql -v vFilePath="E:\Project\20150701.txt" vDateType="1" vImpDate="2015-07-01" -o log.txt --sqlcmd
    use icbc_data_db
    
    -- 测试sqlcmd
    --/*
    --sqlcmd -S localhost -U sa -P 123 -i transdata_BatchImport_folder.sql -v vFilePath="E:\20150701.txt" vDateType="1" vImpDate="2015-07-01" -o log.txt
    --sqlcmd -S localhost -U sa -P 123 -i transdata_BatchImport_folder.sql -v vFilePath="E:\20150927.txt" vDateType="0" vImpDate="2015-09-27" -o log.txt
    --*/
    
    --/*
    --sqlcmd -S localhost -U sa -P 123 -i transdata_BatchImport_folder.sql -v vFilePath="E:\Testsql\20150927.txt" vDateType="0" vImpDate="2015-09-27" -o log.txt
    --*/
    
    -- sqlcmd -v 参数
    -- 文件位置(包含文件名)
    -- $(vFilePath)
    -- 导入数据类型(0 接听明细表Ans/ 1 交易清单表Trans)
    -- $(vDateType) 目前为0/1
    -- 导入日期,日期格式必须为yyyy-MM-dd
    -- $(vImpDate)
    -- bcp分割符
    -- $(vBcpT)
    -- bcp行结束符
    -- $(vBcpR)
    -- 从第几行开始
    -- $(vBcpF)
    -- 到第几行结束
    -- $(vBcpL)
    declare @FilePath nvarchar(max), @DateType nvarchar(1), @ImpDate nvarchar(10);
    -- bcp参数变量
    declare @BcpT nvarchar(10), @BcpR nvarchar(10), @BcpF nvarchar(10), @BcpL nvarchar(10);
    -- 表名变量
    declare @ImpTabName nvarchar(100), @TmpTabName nvarchar(100);
    -- sql语句变量
    declare @ImpSQL nvarchar(2000), @TmpTransSQL nvarchar(2000);
    
    set @FilePath = N'$(vFilePath)'
    set @DateType = LEFT(N'$(vDateType)', 1)
    set @ImpDate = CAST(CONVERT(DATE, LEFT(N'$(vImpDate)', 10), 126) as nvarchar(10));
    
    -- 导入tmp表,然后进行数据出错处理,在导入真实数据库
    
    -- 通过$(vDateType)和$(vImpDate)判断出导入数据库表
    if @DateType = N'0'
    begin
    	print N'Set AnsTable';
    	set @ImpTabName = N'[icbc_data_db].[dbo].[Ans' + RIGHT(LEFT(@ImpDate, 7), 2) + N']';
    	
    	-- //接听明细表导入参数/
    	
    	-- 列分割符
    	set @BcpT = N'"|"'
    	-- 行分割符
    	set @BcpR = N'0x0a'
    	-- 起始行(接听明细无表头,从第1行开始,共9列)
    	set @BcpF = N'1'
    	-- 临时表表名(注意一定要包含[],并指明表路径)
    	set @TmpTabName = N'[icbc_data_db].[dbo].[ImpTmp0]';
    	
    	-- /
    	
    end
    else if @DateType = N'1'
    begin
    	print N'Set Trans Table';
    	set @ImpTabName = N'[icbc_data_db].[dbo].[Trans' + RIGHT(LEFT(@ImpDate, 7), 2) + N']';
    	
    	-- /交易明细表导入参数//
    	
    	-- 列分割符
    	set @BcpT = N','
    	-- 行分割符
    	set @BcpR = N'0x0a'
    	-- 起始行(交易表有表头,从第2行开始,共10列)
    	set @BcpF = N'2'
    	-- 临时表表名(注意一定要包含[],并指明表路径)
    	set @TmpTabName = N'[icbc_data_db].[dbo].[ImpTmp1]';
    	
    	-- /
    	
    end
    else
    begin
    	print N'error: wrong vDateType parameter, exit script';
    	return;
    end
    
    -- 清空临时表
    declare @TmpRes int;
    declare @tmpSQL nvarchar(2000);
    set @tmpSQL = N'delete ' + @TmpTabName;
    print N'clear import tmp table';
    EXEC sp_executesql @tmpSQL;
    
    -- 导入到临时表
    set @ImpSQL =  N'bcp '+ @TmpTabName + N' in ' + @FilePath + N' -c -t' + @BcpT + N' -r' + @BcpR + N' -T -F' + @BcpF;
    print @ImpSQL;
    EXEC icbc_report_db..xp_cmdshell @ImpSQL;
    
    declare @secondColName nvarchar(50);
    set @secondColName = N'null';
    -- 获取导入表第二列列名(以免查找真实表已存在当日数据时返回空)
    -- 语句例子:select name from syscolumns where id=object_id(N'dbo.Trans01') and colorder = 2
    set @tmpSQL = N'set @secondColName = (select distinct max(name) from sys.syscolumns where id=object_id(N''' + @ImpTabName + ''') and colorder = 2)'
    EXEC sp_executesql @tmpSQL, N'@secondColName nvarchar(50) output', @secondColName output;
    if @secondColName = N'null'
    begin
    	print N'error: cannot find secondColName, exit script'
    	return;
    end
    
    -- 将临时表中非指定日期的记录删除
    set @tmpSQL = N'delete ' + @TmpTabName + N' where left(Col0, 10) <> ''' + @ImpDate + N'''';
    print @tmpSQL;
    EXEC sp_executesql @tmpSQL;
    
    -- 导入时,发现真实表已存在当日数据,放弃导入
    -- 【之前日期字段为varchar,现在改为date或者datetime,故比较方式要改】
    set @TmpRes = 0;
    --set @tmpSQL = N'if exists (select 1 from ' + @ImpTabName + N' where left(' + @secondColName + ', 10) = ''' + left(@ImpDate, 10) + N''') select @TmpRes = -1;';
    set @tmpSQL = N'if exists (select 1 from ' + @ImpTabName + N' where cast(' + @secondColName + N' as date) = cast(''' + left(@ImpDate, 10) + ''' as date) ) select @TmpRes = -1;';
    
    EXEC sp_executesql @tmpSQL, N'@TmpRes int output', @TmpRes output;
    
    if @TmpRes = -1
    begin
    print N'date already existed, exit script';
    return;
    end
    
    -- 导入时,若不是指定时间的数据,删除。仅在临时表中保留指定时间的数据
    set @tmpSQL = N'if exists (select 1 from ' + @TmpTabName + N' where left(Col0, 10) <> ''' + left(@ImpDate, 10) + N''') delete ' + @TmpTabName + N' where left(Col0, 10) <> ''' + left(@ImpDate, 10) + N'''';
    print N'delete tmpdate which is not @ImpDate';
    EXEC sp_executesql @tmpSQL;
    
    -- 接听明细表
    -- 【之前日期字段为varchar,现在插入时要cast】
    if @DateType = N'0'
    begin
    	print N'insert into Ans Table';
    	--set @tmpSQL = N'insert into ' + @ImpTabName + N'(AnsDatetime,TelNo,Area,CardNo,RiskLevel,TransDesc,AnsDurTime,FuncGrp,TellerId) select Col0,Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8 from ' + @TmpTabName;
    	set @tmpSQL = N'insert into ' + @ImpTabName + N'(AnsDatetime,TelNo,Area,CardNo,RiskLevel,TransDesc,AnsDurTime,FuncGrp,TellerId) select cast(Col0 as dateime),Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8 from ' + @TmpTabName;
    
    	EXEC sp_executesql @tmpSQL;	
    end
    -- 交易明细表
    else if @DateType = N'1'
    -- 【之前日期字段为varchar,现在插入时要cast】
    begin
    	print N'insert into Trans Table';
    	-- 将Col7中 手机前的"-" 替换
    	-- 将Col5中NULL设置为空,将空格设置为空
    	set @tmpSQL = N'insert into ' + @ImpTabName + N'(TransDate,TransTime,CardNo,TransDesc,TellerId,TransNo,CardAreaNo,CsTelNo,BeforeInfo,AfterInfo) select cast(Col0 as date),cast(Col1 as time),Col2,Col3,Col4,Col5,Col6,Col7,Col8,Col9 from ' + @TmpTabName;
    	EXEC sp_executesql @tmpSQL;
    end


    展开全文
  • $database = 'foxdeploy' $server = '.' $table = 'dbo.powershell_test' ...Import-CSV .\yourcsv.csv | ForEach-Object {Invoke-Sqlcmd ` -Database $database -ServerInstance $server ` -Query "...
  • CSV导入SQLSERVER数据库

    2014-07-28 17:23:00
    /// 通过文件流的方式来读取CSV文件 /// </summary> /// <param name="files">文件名称</param> /// <param name="HeadYes">第一行是否为列标题</param> //...
  • 以下是带标题的示例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...
  • csv导入Sqlserver2008错误解决方法

    千次阅读 2017-12-26 15:39:13
    将客户数据库导出的csv还原到本地时报错。  错误 0xc02020f4: 数据流任务 1: 由于为列“列 0”指定了多个代码页(65001 和 936),无法处理此列。 解决方法: 用系统自带notepad打开csv后另存为时选择ANSI编码...
  • csv导入sql2000报错

    2013-08-02 11:32:27
    insert into [CHR_CHR_互...OPENROWSET('MICROSOFT.JET.OLEDB.4.0','text','DATABASE=D:\1x.csv') 结果 OLE DB 提供程序 'MICROSOFT.JET.OLEDB.4.0' 报错。 [OLE/DB provider returned message: 无效的参数量。]
  • 在此分配中,您将设计表以将数据保存在CSV中,将CSV导入SQL数据库中,并回答有关数据的问题。 换句话说,您将执行: 数据工程 数据分析 注意:您可能会听到用术语“数据建模”代替“数据工程”,但是它们是相同...
  • 导入sql2000数据库表 Jr Jr表格式 3列 ID IQ Date (其中ID储存csv第一行,IQ储存csv第二行数据,date储存导入的当天日期如2017-7-23) 问题: bcp和bulk insert哪个办法最快速导入?最快用时多少秒? ...
  • csv 导入 sqlserver 的数据类型问题

    千次阅读 2009-10-28 17:44:00
    遇到一个问题,把scv导入数据库时,数字的被自动认为是int,然而超过int范围的值统统被读成null进表。 解决办法是在csv文件下,创建一个名为Schema.ini的文件。格式如下: Schema.ini格式如下(参考:MSDN主题 ...
  • 使用SQL Server 2005 导入和导出向导把CSV中的数据信息导入SQL Server 2005时错误报告如下: 消息报告信息如下:错误 0xc00470fe: 数据流任务: 产品级别对于 组件“源 - name$”(1) 而言不足。(SQL Server 导入和...
  • CSV导入SQL,字段中有双引号多个,怎么用SSIS导入
  • csv文件导入sqlserver 源码,大量数据可导入,转码再导入
  • 提供毫不费力的交互作用,以基于任意基本输入(例如CSV)生成SQL查询。 解压缩后,只需双击CSV2SQL.jar文件,然后选择一个CSV文件即可生成SQL。 输出应显示在下一个屏幕上。 就是这样!
  • CSV文件导入SQL SERVER

    2014-09-18 13:00:39
    请问有没有不使用编程语言,只使用SQL或CMD(或shell)的办法,导入SQL SERVER数据库 如果能提供源码,最好了 如果不行,烦请提供可行方案(函数接口,如BULK INSERT重要参数的设置等) 因为要的着急,所以请...
  • 有一个csv文件需要导入Sql数据库中,其格式为 “adb”,"dds","sdf" “adb”,"dds","sdf" ...... 先在sql数据库中建一个表,结构与csv文件相同(将数据,时间等都定义成nvarchar,否则出现错误)。 ...
  • 简化SQL-CSV导入/导出功能。
  • 将多个CSV批量导入SQL Server表中

    千次阅读 2016-02-18 14:17:16
    将多个CSV批量导入SQL Server表中
  • 一、导入方式一 二、导入方式二 三、解决方案 猜想:应该是数据格式不匹配 时间紧迫,采用手动查询的方式~ 先记录下问题,稍后解决
  • csv2sql是一个小型的简单程序,专门用于将文件快速转换为简单的语句,然后可以将其用作数据库的导入源。 关于CSV2SQL 最初创建该程序是为了加快检查过程,然后将大(通常大于1GB)的CSV文件导入SQLite数据库。 数据...
  • SQL挑战 在此分配中,您将设计表以将数据保存在CSV中,将CSV导入SQL数据库中,并回答有关数据的问题。
  • pl/sql导出 csv,再将csv导入sql中为乱码 电脑已经增加了 环境变量 SIMPLIFIED CHINESE_CHINA.ZHS16GBK ,pl/sql显示结果 中文正常,导出成csv打开中文正常,就是导入到sql中变成了乱码,请问怎么解决?
  • SQLyog导入csv文件sql

    千次阅读 2015-09-11 11:27:36
    LOAD DATA LOCAL INFILE 'E:\mobilearea.csv' INTO TABLE crmhdcc.t_mobilearea CHARACTER SET gbk FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\r\n'( id, m_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,747
精华内容 698
关键字:

csv导入sql