SQL Bulk DestinkableNameName

SQL Bulk DestinkableNameName

Utilizo un archivo .csv para realizar una inserción masiva en mi base de datos de SQL Server. El problema es DestinationTableName porque cuando uso una cadena para DestinationTableName, obtengo una excepción de error

System.InvalidOperationException: No se puede acceder a la tabla de destino

como se puede ver en la captura de pantalla.

Si usa "prueba" como copy.DestinationTableName = "prueba"; funciona bien

ingrese la descripción de la imagen aquí

string symbolName = dt.Rows[1][0].ToString();

string strConnection = @"Data Source =.\SQLEXPRESS; AttachDbFilename = C:\USERS\JEF\DOCUMENTS\DATABASE1.MDF; Integrated Security = True; Connect Timeout = 30; User Instance = True";
SqlConnection condb2 = new SqlConnection(strConnection);

string createTablerow ="create table ['"+symbolName+"'] (code1 VARCHAR(100) COLLATE Arabic_CI_AI_KS_WS,date1 varchar(50),open1 varchar(50),high1 varchar(50),low1 varchar(50),close1 varchar(50),vol1 varchar(50))";

using (SqlConnection connection = new SqlConnection(strConnection))
{
    SqlCommand command1 = new SqlCommand(createTablerow, connection);
    connection.Open();
    command1.ExecuteNonQuery();
}

using (SqlConnection cn = new SqlConnection(strConnection))
{
    cn.Open();

    using (SqlBulkCopy copy = new SqlBulkCopy(cn))
    {
        copy.ColumnMappings.Add(0, "code1");
        copy.ColumnMappings.Add(1, "date1");
        copy.ColumnMappings.Add(2, "open1");
        copy.ColumnMappings.Add(3, "high1");
        copy.ColumnMappings.Add(4, "low1");
        copy.ColumnMappings.Add(5, "close1");
        copy.ColumnMappings.Add(6, "vol1");

        copy.DestinationTableName = symbolName;

        copy.WriteToServer(dt);
    }
}
Mostrar la mejor respuesta

crear una tabla con un guión en el nombre es simplemente preguntar por problemas; podría intentar escapar de él, es decir, asegurarse de copy.DestinationTableName = "[" + symbolName + "]";, pero no sé si eso ayudará. Francamente, mi consejo sería: "no cree nombres de tablas con guiones"

eso es trabajar tnx tanto

Al igual que lo hizo cuando creó la tabla:

"create table ['"+symbolName+"']

El truco aquí es probablemente escapar del nombre de la tabla para compensar el guión que contiene, así que:

copy.DestinationTableName = "[" + symbolName + "]";

Nota: si es posible, por lo general es preferible ceñirse a los nombres que no necesitan escape. Pero... si funciona.

"crear tabla ["+symbolName+"] esto funciona para mí, tal vez algo esté mal