如何解决从 SQL 导出到 Access
我有一个 sql 数据库,有很多表和记录,但我只想导出某些表中的前 N 行。 SQL 导出向导工作,但导出所有我不想做的表数据,我只想要前 N 行。
我该如何解决这个问题?谢谢
解决方法
为每个选择 TOP N
条记录的表创建一个直接的视图。
然后导出视图。
,如果你不想修改原来的 sql server 数据库,你可以创建第二个 sql server 数据库,它只包含@Gustav 建议的视图。
这些视图然后引用原始 sql server 数据库的表。
因此您根本不必接触原始数据库。
,您应该能够将 SQL Server 中所有表中的数据转储到单独的 CSV 文件中。以管理员权限打开 PowerShell(搜索“powershell”,右键单击“powershell.exe”并单击“以管理员身份运行”)。在打开的窗口中,运行此代码。
$server = "SERVERNAME\INSTANCE"
$database = "DATABASE_NAME"
$tablequery = "SELECT name from sys.tables"
#Delcare Connection Variables
$connectionTemplate = "Data Source={0};Integrated Security=SSPI;Initial Catalog={1};"
$connectionString = [string]::Format($connectionTemplate,$server,$database)
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString
$command = New-Object System.Data.SqlClient.SqlCommand
$command.CommandText = $tablequery
$command.Connection = $connection
#Load up the Tables in a dataset
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $command
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$connection.Close()
# Loop through all tables and export a CSV of the Table Data
foreach ($Row in $DataSet.Tables[0].Rows)
{
$queryData = "SELECT * FROM [$($Row[0])]"
#Specify the output location of your dump file
$extractFile = "C:\mssql\export\$($Row[0]).csv"
$command.CommandText = $queryData
$command.Connection = $connection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $command
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$connection.Close()
$DataSet.Tables[0] | Export-Csv $extractFile -NoTypeInformation
}
现在,在 Access 中,运行下面的 VBA 代码(遍历所有 CSV 文件并将每个文件导入到表中)。
Function DoImport()
Dim strPathFile As String
Dim strFile As String
Dim strPath As String
Dim strTable As String
Dim blnHasFieldNames As Boolean
' Change this next line to True if the first row in CSV worksheet
' has field names
blnHasFieldNames = True
' Replace C:\Documents\ with the real path to the folder that
' contains the CSV files
strPath = "C:\your_path_here\"
' Replace tablename with the real name of the table into which
' the data are to be imported
strFile = Dir(strPath & "*.csv")
Do While Len(strFile) > 0
strTable = Left(strFile,Len(strFile) - 4)
strPathFile = strPath & strFile
'DoCmd.TransferText acImportDelim,strTable,strPathFile,blnHasFieldNames
DoCmd.TransferText acLinkDelim,blnHasFieldNames
' Uncomment out the next code step if you want to delete the
' EXCEL file after it's been imported
' Kill strPathFile
strFile = Dir()
Loop
End Function
注意:您可以链接到文件,就像我在这里所做的那样,或者您可以导入文件。如果您导入数据,请确保在导入完成后进行压缩和修复。 Access 因在导入大量数据后变得非常庞大而臭名昭著。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。