mysql读取csv - sql server导入csv




将CSV文件导入SQL Server (6)

我正在寻找帮助,使用BULK INSERT.csv文件导入到SQL Server中,并且我有几个基本问​​题。

问题:

  1. CSV文件数据可能包含(逗号)(例如:description),那么如何使导入处理这些数据?

  2. 如果客户端从Excel创建CSV,那么带有逗号的数据将被包含在"" (双引号)内[如下例所示],那么导入如何处理?

  3. 我们如何跟踪某些行是否有错误的数据,哪些导入跳过? (导入是否跳过不可导入的行)

以下是带标题的示例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.

和要导入的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
)

2)如果客户端从excel创建csv,那么包含逗号的数据将被包含在“...”(双引号)内[如下例所示],那么导入如何处理呢?

你应该使用FORMAT ='CSV',FIELDQUOTE =''''选项:

BULK INSERT SchoolsTemp
FROM 'C:\CSVData\Schools.csv'
WITH
(
    FORMAT = 'CSV', 
    FIELDQUOTE = '"',
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    TABLOCK
)

SQL Server Management Studio将CSV文件导入数据库。

  1. 首先,在您要导入CSV文件的数据库中创建一个表格。
  2. 使用SQL Server Management Studio登录到您的数据库。
  3. 右键单击数据库并选择任务 - >导入数据...
  4. 点击下一步>按钮。
  5. 对于数据源,请选择平面文件源。 然后使用浏览按钮选择CSV文件。 在点击下一步>按钮之前,花点时间配置数据导入。
  6. 对于目标,请选择正确的数据库提供者(例如对于SQL Server 2012,可以使用SQL Server Native Client 11.0)。 输入服务器名称; 选中使用SQL Server身份验证,在单击下一步>按钮之前输入用户名,密码和数据库。
  7. 在选择源表格和视图窗口中,您可以在单击下一步>按钮之前编辑映射。
  8. 立即检查运行并单击下一步>按钮。
  9. 点击完成按钮运行包。

website


冷杉你需要将CSV文件导入数据表

然后你可以使用SQLBulkCopy插入批量行

using System;
using System.Data;
using System.Data.SqlClient;

namespace SqlBulkInsertExample
{
    class Program
    {
      static void Main(string[] args)
        {
            DataTable prodSalesData = new DataTable("ProductSalesData");

            // Create Column 1: SaleDate
            DataColumn dateColumn = new DataColumn();
            dateColumn.DataType = Type.GetType("System.DateTime");
            dateColumn.ColumnName = "SaleDate";

            // Create Column 2: ProductName
            DataColumn productNameColumn = new DataColumn();
            productNameColumn.ColumnName = "ProductName";

            // Create Column 3: TotalSales
            DataColumn totalSalesColumn = new DataColumn();
            totalSalesColumn.DataType = Type.GetType("System.Int32");
            totalSalesColumn.ColumnName = "TotalSales";

            // Add the columns to the ProductSalesData DataTable
            prodSalesData.Columns.Add(dateColumn);
            prodSalesData.Columns.Add(productNameColumn);
            prodSalesData.Columns.Add(totalSalesColumn);

            // Let's populate the datatable with our stats.
            // You can add as many rows as you want here!

            // Create a new row
            DataRow dailyProductSalesRow = prodSalesData.NewRow();
            dailyProductSalesRow["SaleDate"] = DateTime.Now.Date;
            dailyProductSalesRow["ProductName"] = "Nike";
            dailyProductSalesRow["TotalSales"] = 10;

            // Add the row to the ProductSalesData DataTable
            prodSalesData.Rows.Add(dailyProductSalesRow);

            // Copy the DataTable to SQL Server using SqlBulkCopy
            using (SqlConnection dbConnection = new SqlConnection("Data Source=ProductHost;Initial Catalog=dbProduct;Integrated Security=SSPI;Connection Timeout=60;Min Pool Size=2;Max Pool Size=20;"))
            {
                dbConnection.Open();
                using (SqlBulkCopy s = new SqlBulkCopy(dbConnection))
                {
                    s.DestinationTableName = prodSalesData.TableName;

                    foreach (var column in prodSalesData.Columns)
                        s.ColumnMappings.Add(column.ToString(), column.ToString());

                    s.WriteToServer(prodSalesData);
                }
            }
        }
    }
}

因为他们不使用SQL导入向导,所以步骤如下:

  1. 右键单击选项任务中的数据库以导入数据,

  2. 一旦向导打开,我们选择隐含的数据类型。 在这种情况下,它会是

平面文件源

我们选择CSV文件,可以在CSV中配置表格的数据类型,但最好从CSV中提取。

  1. 点击下一步,然后在最后一个选项中选择

SQL客户端

根据我们的身份验证类型,我们选择它,一旦完成,就会有一个非常重要的选项。

  1. 我们可以在CSV中定义表格的ID(建议CSV的列应该与表格中的字段相同)。 在编辑映射选项中,我们可以看到每个表格的电子表格的预览,如果我们希望向导在默认情况下插入标识,我们可以不选中该选项。

启用ID插入

(通常不是从1开始),相反,如果我们有一个CSV列中的id列,我们选择启用ID插入,下一步是结束向导,我们可以在这里查看更改。

另一方面,在下面的窗口中可能会发出警报,或者警告理想的是忽略这一点,只有当他们留下错误时才需要注意。

此链接有图片


您首先需要在数据库中创建一个表格,您将在其中导入CSV文件。 表格创建完成后,请按照以下步骤操作。

•使用SQL Server Management Studio登录到数据库

•右键单击数据库并选择Tasks -> Import Data...

•点击Next >按钮

•对于数据源,选择Flat File Source 。 然后使用浏览按钮选择CSV文件。 花点时间配置您希望导入数据的方式,然后单击Next >按钮。

•对于目标,选择正确的数据库提供程序(例如对于SQL Server 2012,可以使用SQL Server Native Client 11.0)。 输入服务器名称。 检查Use SQL Server Authentication单选按钮。 输入用户名,密码和数据库,然后点击Next >按钮。

•在选择源表格和视图窗口中,您可以在单击Next >按钮之前编辑映射。

•选中Run immediately复选框并单击Next >按钮。

•点击Finish按钮运行包。

以上是在本website上发现的(我已经使用过它并进行过测试):


解决数据问题中逗号问题的最佳,最快和最简单的方法是在将Windows列表分隔符设置设置为逗号(例如管道)之外的其他设置后,使用Excel保存逗号分隔文件。 然后这会生成一个管道(或其他)分开的文件给你,然后你可以导入。 这here描述。







bulk