Sql server 大容量插入正在将空值替换为NULL
我有一个巨大的CSV文件,其中有许多空白值,如: 值1、值2、值3、值4、值5、值6、值8、值9、值10、值 我正试图通过PS脚本导入。为此,我使用以下powershell脚本Sql server 大容量插入正在将空值替换为NULL,sql-server,powershell,bulkinsert,sql-scripts,windows-scripting,Sql Server,Powershell,Bulkinsert,Sql Scripts,Windows Scripting,我有一个巨大的CSV文件,其中有许多空白值,如: 值1、值2、值3、值4、值5、值6、值8、值9、值10、值 我正试图通过PS脚本导入。为此,我使用以下powershell脚本 $Server = 'server_value' $Database = 'db_value' $Username = 'usr_value' $Password = 'pass_value' $table = 'table_value' $CSVFilePath = "csv_file_path.csv" $DbQue
$Server = 'server_value'
$Database = 'db_value'
$Username = 'usr_value'
$Password = 'pass_value'
$table = 'table_value'
$CSVFilePath = "csv_file_path.csv"
$DbQuery = "BULK INSERT $table FROM '$CSVFilePath' WITH (FIRSTROW = 2, FIELDTERMINATOR = ',', ROWTERMINATOR='\n')"
# Create SQL connection
$DbConnection = New-Object System.Data.SqlClient.SqlConnection
$DbConnectionString = "Server = $Server; Database = $Database; User ID=$Username; Password=$password; pooling=false;"
$DbConnection.ConnectionString = $DbConnectionString
$DbConnection.Open()
# Create SQL command
$DbCommand = New-Object System.Data.SQLClient.SQLCommand
$DbCommand.Connection = $DbConnection
$DbCommand.CommandText = $DbQuery
# Execute
$DbCommand.ExecuteNonQuery()
# Close connection
$DbConnection.Close()
我得到的结果是:
COLUMN01 | COLUMN02 | COLUMN03 | COLUMN04 | COLUMN05 | COLUMN06 | COLUMN07 | COLUMN08 | COLUMN09 | COLUMN10 | COLUMN11 | COLUMN12 | COLUMN13 | COLUMN14
VALUE001 | VALUE002 | VALUE003 | VALUE004 | VALUE005 | VALUE006 | NULL | VALUE008 | VALUE009 | VALUE010 | VALUE011 | NULL | NULL | NULL
我真正想要的是:
COLUMN01 | COLUMN02 | COLUMN03 | COLUMN04 | COLUMN05 | COLUMN06 | COLUMN07 | COLUMN08 | COLUMN09 | COLUMN10 | COLUMN11 | COLUMN12 | COLUMN13 | COLUMN14
VALUE001 | VALUE002 | VALUE003 | VALUE004 | VALUE005 | VALUE006 | | VALUE008 | VALUE009 | VALUE010 | VALUE011 | | |
我已经在空值上尝试了单引号和双引号,如下所示:
BULK INSERT $table
FROM '$CSVFilePath'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR='\n',
KEEPNULLS
)
值1、值2、值3、值4、值5、值6、值8、值9、值10、“”、“”、“”
或:
值1、值2、值3、值4、值5、值6、值8、值9、值10、值
我得到的是:
COLUMN01 | COLUMN02 | COLUMN03 | COLUMN04 | COLUMN05 | COLUMN06 | COLUMN07 | COLUMN08 | COLUMN09 | COLUMN10 | COLUMN11 | COLUMN12 | COLUMN13 | COLUMN14
VALUE001 | VALUE002 | VALUE003 | VALUE004 | VALUE005 | VALUE006 | '' | VALUE008 | VALUE009 | VALUE010 | VALUE011 | '' | '' | ''
或:
还尝试了批量插入上的KEEPNULLS,如下所示:
BULK INSERT $table
FROM '$CSVFilePath'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR='\n',
KEEPNULLS
)
但不起作用。执行大容量插入时,空值处理方式的选项是两件事之一