我想在sql server数据库中上传csv文件。我想一个接一个地上传数据,而不是在插入之前清空表....我怎样才能修改那个代码来实现...
感谢。
$deleterecords = "TRUNCATE TABLE csvTable"; //empty the table of its current records
$params = array();
$options = array( "Scrollable" => SQLSRV_CURSOR_KEYSET );
$stmt = sqlsrv_query($conn, $deleterecords, $params, $options );
//$stmt=odbc_exec($conn,$deleterecords);
//Upload File
if (isset($_POST['submit'])) {
if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . "</h1>";
echo "<h2>Displaying contents:</h2>";
readfile($_FILES['filename']['tmp_name']);
}
//Import uploaded file to Database
$handle = fopen($_FILES['filename']['tmp_name'], "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$import="INSERT into csvTable(Name,city) values('$data[0]','$data[1]')";
$params = array();
$options = array( "Scrollable" => SQLSRV_CURSOR_KEYSET );
$stmt = sqlsrv_query($conn, $import, $params, $options );
//$stmt=odbc_exec($conn,$import);
}
fclose($handle);
print "Import done";
答案 0 :(得分:0)
我认为,这是实际问题
现在我希望数据保留在表格中,然后下一个插入点就在已经插入表格中的数据之下
SQL-Server表没有任何隐式顺序!
数据 ...
下面没有如果您不删除旧数据,会发生什么?我是对的,您的实际问题是:我如何知道新插入的记录?
你可能
ImportID INT IDENTITY
,这将确保一个正在运行的号码。如果您在查询中使用ORDER BY ImportID
,则会在旧数据下方获得新数据 DEFAULT CONSTRAINT
的列来设置当前时间以允许对此进行分组(仅当没有可能的并行插入时!)